Tho*_*ard 6 objective-c instantiation storyboard viewdidload ios
我试图以编程方式将ViewController推送到导航控制器,而我正在使用我的故事板来创建它.
这是我的代码:
+ (void) pushViewController:(NSString *) identifier ForItems:(NSMutableArray *) items sender:(UIViewController *) sender {
GenericViewController *viewController = (GenericViewController *)[sender.storyboard instantiateViewControllerWithIdentifier:identifier];
viewController.items = [[NSMutableArray alloc] init];
[viewController.items removeAllObjects];
[viewController.items addObject:[[NSMutableArray alloc] init]];
[viewController.items[0] addObjectsFromArray:items];
[sender.navigationController pushViewController:viewController animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
在GenericViewController viewDidLoad我用我的items.多亏了一些断点,我已经看到了等于零GenericViewController viewDidLoad之后的juste .instantiateViewControllerWithIdentifieritems
我以为MyViewController viewDidLoad在pushViewController方法中调用了.
知道为什么viewDidLoad在这期间被召唤instantiateViewControllerWithIdentifier?
---更新:---
在这里我的 viewDidLoad
- (void)viewDidLoad
{
for (MyItem *currentItem in self.items[0]) {
[Do Something]
}
[super viewDidLoad];
[...]
}
Run Code Online (Sandbox Code Playgroud)
self.items没有.所以什么都没做.
小智 7
对任何可能仍有同样问题的人.
我遇到了类似的情况,只需调用loadViewIfNeeded()即可解决问题.
let sb: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let controller = sb.instantiateViewControllerWithIdentifier("LoadingView") as! LoadingViewController
controller.loadViewIfNeeded()
Run Code Online (Sandbox Code Playgroud)
然后我可以访问视图中的所有内容.
viewDidLoad当控制器的视图加载到内存中时调用。
viewWillAppear通知视图控制器其视图即将添加到视图层次结构中。我想这就是[self.navigationController pushViewController:viewController animated:YES];被召唤的时候。
viewDidAppear通知视图控制器其视图已添加到视图层次结构中。这是MyViewController添加到navigationController.
| 归档时间: |
|
| 查看次数: |
7766 次 |
| 最近记录: |