我有一个简单的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。