故事板可以从任何地方创建模态视图

时间:2013-07-25 10:38:45

标签: ios objective-c storyboard

我需要在我的应用中创建一个模态“流”。它由两个“场景”组成,它们都是UITableViewController的子类。

用户可以在这两个表视图之间进行推送和弹出。

在任何时候,他们都可以按“完成”(在导航栏中)并关闭整个模态视图以回到原来的位置。

需要从应用程序的多个位置访问整个模态流程。我真的不想为此创建多个模态segue。

我的问题是,在故事板中创建这个,你会为这个流创建一个全新的故事板(我不喜欢这个)。

你会创建多个模态segues吗?

我应该在同一个storyboard文件中创建此流,还是作为标识符可访问的单独实体?

还是其他什么?

1 个答案:

答案 0 :(得分:0)

听起来使用单个故事板会更容易,但不会在任何地方创建多个segue。您可以非常容易地以编程方式呈现视图控制器:

MyViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"MyViewController"];
// set any properties on vc here, if necessary to pass it any data
[self.window.rootViewController presentModalViewController:vc animated:YES];

您可以将所有这些代码放在一个帮助器方法中,以便更轻松地重用此代码,也许是这样的类方法:

@interface MyViewController ...
+ (void)presentNewViewControllerModally;
...
@end

点击完成按钮:

[self.window.rootViewController dismissModalViewControllerAnimated:YES];

请注意,如果你很可能永远不会看到这个模态视图控制器,你可以将该视图控制器放在一个单独的xib文件而不是故事板中,并且我认为可能会事情更有效(故事板仍然更轻盈)。在这种情况下,只需将上面的instantiteViewControllerWithIdentifier消息替换为:

[[MyViewController alloc] initWithNibName:@"SomeNib" bundle:nil];

......其余的代码是一样的。我已经将这种技术用于“登录”视图控制器,只是偶尔需要显示它。