我有一个简单的React-Native组件ReactNativeMasterView
,其中包含一个我想用于本机导航的按钮。
ReactNativeMasterView
中的:
var MasterViewController = NativeModules.MasterViewController
然后按钮调用:
MasterViewController.buttonEvent()
我有一个名为MasterViewController
在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];
});
似乎按预期工作。
答案 0 :(得分:1)
它是黑色的,因为您以编程方式initializing
viewController
并推送UIViewController *detail = [[UIViewController alloc]init];
。
试试这个:
UIViewController *detail = [[UIViewController alloc] init];
detail.view.backgroundColor = [UIColor whiteColor];
修改强>
除非你需要,否则你不应该initializing
查看那样的控制器。您应该使用storyboards
创建视图控制器并布置视图,然后将它们显示在UINavigationViewController
上。这是一个很好的tutorial。