0

我想(从我的 StoryBoard)制作一个 ViewController,我可以通过代码从任何地方推送(这个 ViewController 将被使用很多时间,所以我不想在 StoryBoard 中添加大量的转场...)。

我还必须将当前 ViewController 中的一些变量传递给推送的变量。为此,我正在使用以下代码:

NBItemDetailsViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"ItemDetailsViewController"];
vc.item = self.selectedItem;
[self.navigationController pushViewController:vc animated:YES];

它几乎可以工作,但是在推送的 ViewController 中,viewDidLoad 方法被调用了两次。第一次,我可以得到该项目,但第二次,它是空的。当然,显示的 ViewController 似乎是第二个调用之一,我无法获取我的项目。

任何想法 ?有没有更好的选择,在 StoryBoard 中使用 segues(我不敢相信没有办法在 StoryBoard 中重用 ViewController ......)?

PS:我已经尝试过使用 viewDidAppear。

4

1 回答 1

1

您可以创建 (MyRegularViewController) 的子类UIViewController并通过 (MyRegularViewController.xib) 分配 .xib

File > New > File > User Interface > Empty

并将 a 拖到UIViewController您的空 xib 文件中。将您的 MyRegularViewController 与该 xib 相关联,然后对其进行自定义。

现在你可以像这样在任何你想要的地方使用它;

MyRegularViewController *regular = [[MyRegularViewController alloc] initWithNibName:@"MyRegularViewController" bundle:nil];
self.navigationController pushViewController:regular animated:YES];

您没有义务在所有情况下都使用故事板,事实上,在这种情况下使用故事板会弄乱您的故事板。只需为此使用 xib 和自定义类。

于 2013-05-24T23:43:42.010 回答