我想(从我的StoryBoard)制作一个ViewController,我可以通过代码从任何地方推送(这个ViewController将会花费很多时间,所以我不想添加大量的segues在StoryBoard ......)。
我还必须将一些变量从当前的ViewController传递给推送的一个。 要做到这一点,我正在使用此代码:
NBItemDetailsViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"ItemDetailsViewController"];
vc.item = self.selectedItem;
[self.navigationController pushViewController:vc animated:YES];
它几乎可以工作,但在推送的ViewController中,viewDidLoad方法被调用两次。第一次,我可以获得该项目,但第二次,它是null。当然看起来显示的ViewController是第二个调用之一,我无法获取我的项目。
有什么想法吗? 有没有更好的选择,在StoryBoard中使用segues(我无法相信在StoryBoard中无法重用ViewController ......)?
PS:我已经尝试过使用viewDidAppear。
答案 0 :(得分:1)
您可以创建UIViewController
(MyRegularViewController)的子类并通过(MyRegularViewController.xib)分配.xib
File > New > File > User Interface > Empty
并将UIViewController
拖到您的emtpy xib文件中。将MyRegularViewController与该xib相关联,然后对其进行自定义。
现在你可以在任何地方使用它,就像这样;
MyRegularViewController *regular = [[MyRegularViewController alloc] initWithNibName:@"MyRegularViewController" bundle:nil];
self.navigationController pushViewController:regular animated:YES];
在所有情况下,您没有义务使用故事板,事实上使用故事板来处理这种情况会使您的故事板变得混乱。只需使用xib和自定义类即可。