我将尝试使用编程方式将一个视图控制器推入到导航控制器中,在此过程中我会使用我的故事板来创建它。
以下是我的代码:
在
我认为
有什么想法,为什么
以下是我的代码:
+ (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];
}
在
GenericViewController viewDidLoad
中,我正在使用我的items
。通过一些断点,我发现在instantiateViewControllerWithIdentifier
之后,GenericViewController viewDidLoad
会出现一个items
为nil的情况。我认为
MyViewController viewDidLoad
是在pushViewController
方法中调用的。有什么想法,为什么
viewDidLoad
在instantiateViewControllerWithIdentifier
期间被调用?
---更新:
这是我的viewDidLoad
代码:- (void)viewDidLoad
{
for (MyItem *currentItem in self.items[0]) {
[Do Something]
}
[super viewDidLoad];
[...]
}
self.items
是空的,因此没有进行任何操作。
instantiateViewControllerWithIdentifier
不会调用viewDidLoad
。我更新了我的代码,现在使用静态管理器来实例化并推送我的新视图控制器。 - Thomas Besnehard