按下React-Native View组件按钮上的原生iOS导航

时间:2017-07-04 18:23:23

标签: ios objective-c react-native uinavigationcontroller navigation

我有一个简单的React-Native组件ReactNativeMasterView,其中包含一个我想用于本机导航的按钮。

ReactNativeMasterView中的

var MasterViewController = NativeModules.MasterViewController

然后按钮调用:

MasterViewController.buttonEvent()

我有一个名为MasterViewController

的基本Obj-C视图控制器

MasterViewController.h

@interface MasterViewController : UIViewController <RCTBridgeModule>

并在MasterViewController.m 我在故事板中引用了反应原生视图:

@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];
});

似乎按预期工作。

1 个答案:

答案 0 :(得分:1)

它是黑色的,因为您以编程方式initializing viewController并推送UIViewController *detail = [[UIViewController alloc]init];

试试这个:

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

修改

除非你需要,否则你不应该initializing查看那样的控制器。您应该使用storyboards创建视图控制器并布置视图,然后将它们显示在UINavigationViewController上。这是一个很好的tutorial