alloc init不会在其中加载组件

时间:2016-05-03 06:02:08

标签: ios objective-c uiviewcontroller uinavigationcontroller

我正在使用UINavigationController但是当我推送一个视图控制器时,只需简单地通过使类的对象加载类而不是其中的组件。 这是我的AppDelegate.m

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
ViewController *vc = [sb instantiateInitialViewController];
UINavigationController *nav = [[UINavigationController alloc] init];
self.window.rootViewController = nav;
nav.viewControllers = @[vc];

和我的第一个UIViewController if操作按钮代码是

NextView *next = [[NextView alloc] init];
[self.navigationController pushViewController:next animated:YES ];

它到达下一个UIViewController但没有加载内部组件,如 - 按钮,文本字段等。

如果我尝试这个代码,它会给我运行时错误

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
NextView *next = [sb instantiateViewControllerWithIdentifier:@"two"];
[self.navigationController pushViewController:next animated:YES ];

2 个答案:

答案 0 :(得分:0)

确保NextView继承UIViewController并且您已将标识符two指定给该视图控制器,并且您已将标识检查器中的类NextView设置为该视图控件。< / p>

希望这会有所帮助:)

答案 1 :(得分:0)

你无法在UIViewController的子类中加载alloc init的插座(按钮等)。您应该使用-initWithNibName:bundle:方法使用xib文件初始化它。或者您可以使用storyboard实例化它。

// You can get current storyboard from the View Controller 
UIStoryboard *sb = vc.storyboard;
NextView *next = [sb instantiateViewControllerWithIdentifier:@"two"];
[self.navigationController pushViewController:next animated:YES];