alloc init 不会在其中加载组件
Posted
技术标签:
【中文标题】alloc init 不会在其中加载组件【英文标题】:alloc init does not load component in it 【发布时间】:2016-05-03 06:02:07 【问题描述】:我正在使用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
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 ];
【问题讨论】:
你在故事板中给出了标识符吗? 你得到什么样的运行时错误?请粘贴登录问题。 您遇到了哪个运行时错误? 【参考方案1】:确保 NextView
继承 UIViewController
并且您已将标识符作为 two
分配给该视图控制器,并且您已将类 NextView
从身份检查器设置为该视图控制器。
希望这会有所帮助:)
【讨论】:
【参考方案2】:您无法在 UIViewController 的子类中使用 alloc
init
加载插座(按钮等)。您应该使用 -initWithNibName:bundle:
方法使用 xib 文件对其进行初始化。或者你可以用故事板实例化它。
// You can get current storyboard from the View Controller
UIStoryboard *sb = vc.storyboard;
NextView *next = [sb instantiateViewControllerWithIdentifier:@"two"];
[self.navigationController pushViewController:next animated:YES];
【讨论】:
@sahib,请告诉我们这个方法有什么错误?以上是关于alloc init 不会在其中加载组件的主要内容,如果未能解决你的问题,请参考以下文章