我有一个简单的React-Native组件ReactNativeMasterView,带有要用于本机导航的按钮。

ReactNativeMasterView中:

var MasterViewController = NativeModules.MasterViewController

然后该按钮将调用:
MasterViewController.buttonEvent()

我有一个名为MasterViewController的基本Obj-C视图控制器

MasterViewController.h中:
@interface MasterViewController : UIViewController <RCTBridgeModule>

并在MasterViewController.m
我在情节提要中引用了react本机视图:
@property (weak, nonatomic) IBOutlet RNMasterView *reactViewWrapper;

本机模块和方法如下所示:
RCT_EXPORT_MODULE();

RCT_EXPORT_METHOD(buttonEvent) {

    RCTLogInfo(@"Button Pressed");

    UIViewController *detail = [[UIViewController alloc]init];

    UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController;
    dispatch_async(dispatch_get_main_queue(), ^{
        [rootViewController showViewController:detail sender:self];
    });

}

它几乎也可以工作...

可悲的是,过渡使我进入了黑屏,当我检查视图层次结构时,UITransitionView似乎只是呈现了一个空的View,我实际上也可以从该状态返回。

任何人有任何想法如何使这项工作?

更新:

我可以使其与UIAlertController一起使用:
UIAlertController * alert = [UIAlertController
                             alertControllerWithTitle:name
                             message:param
                             preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) {
    NSLog(@"Cancel");
}];

[alert addAction:cancelAction];


UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController;
dispatch_async(dispatch_get_main_queue(), ^{
    [rootViewController presentViewController:alert animated: YES completion: nil];
});

似乎按预期工作。

最佳答案

它是黑色的,因为您以编程方式对initializing进行viewController并将其推入UIViewController *detail = [[UIViewController alloc]init];

尝试这个:

UIViewController *detail = [[UIViewController alloc] init];
detail.view.backgroundColor = [UIColor whiteColor];

编辑

除非需要,否则您不应该真正成为initializing视图控制器。您应该使用storyboards创建视图控制器并布局视图,然后将其呈现到UINavigationViewController上。这是一个很好的tutorial

09-20 07:25