在没有Segue的情况下在UIViewControllers之间移动

时间:2015-04-29 17:22:12

标签: ios objective-c uiviewcontroller segue

我有一个故事板上有8 UIViewController个(并且正在计算)。我需要能够按需在任何一对之间移动。从本质上讲,我要做的是模仿UITabBarController的功能。由于有这么多,我不能只使用UITabBarController(这会立即解决我的问题),因此我使用UIPopoverController嵌入式UITableView来允许用户选择目的地。

当然,我可以在故事板上创建segue,但是为了设置我目前需要的所有segue,我将不得不为我现在拥有的视图控制器创建56个这样的segue,可能还有更多随着事情的发展。

我的一个想法是创建一个“中心”视图控制器,除了将每个“实际”VC的片段保存并且成为每个VC的代表之外,它实际上并没有做任何事情。然后,当我想在VC之间切换时,我首先关闭视图控制器并将目标的segue名称传递回集线器。然后集线器可以立即执行该segue,这可以让我到达我想要的位置。我认为这会起作用,但似乎有点像黑客。

有谁知道如果有更好的方法来实现这一目标?谢谢!

2 个答案:

答案 0 :(得分:3)

为什么不为每个人提供一个故事板标识符,然后使用以下标识符获取您需要的任何人:

UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"identifier"];

然后通过push或present modally

显示此视图控制器

答案 1 :(得分:0)

您可以使用performSegueWithIdentifier:

轻松完成此操作
[self performSegueWithIdentifier:@"myCustomSegue" sender:self];

然后在prepareForSegue:方法中,配置您需要的内容:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"myCustomSegue"]) {
        MyCustomViewController *customViewController = segue.destinationViewController;
        customViewController.customAttribute = @"something";
    }
}

您还可以使用shouldPerformSegueWithIdentifier:来控制导航。