一个人可以统治他们

时间:2016-05-18 05:30:01

标签: ios swift2 segue

我的故事板中有4个ViewControllers。我希望他们所有人都能通过performSegue访问我的“设置”ViewController。 有没有可能有一个segue来执行此操作,而不是从每个ViewController ctrl +拖动到我的“设置”ViewController?

4 个答案:

答案 0 :(得分:3)

单个segue不可能。您需要来自4个不同ViewControllers的4个不同的segue。但是你可以以编程方式做到这一点。

UIVIewController

制作扩展程序
extension UIViewController
{
    func showSettingsScreen()
    {
        let storyBoard = UIStoryboard(name: "YourStoryBoardName", bundle:nil)
        let settingsScreen = storyBoard.instantiateViewControllerWithIdentifier("YourSettingsViewControllerID")
        self.navigationController?.pushViewController(settingsScreen, animated: true)
    }
}

现在您可以从任何视图控制器调用showSettingsScreen()(确保此视图控制器具有导航控制器)。

答案 1 :(得分:0)

我真的不这么认为有办法这样做。你应该将你的SettingsViewController连接到你的所有4个视图控制器,添加segue,并定义一个用于

的segue标识符
prepareForSegue:sender: 
or  
shouldPerformSegueWithIdentifier:sender: 

方法。你可以通过这些标识符访问segues。如果您发现“ctrl +从每个ViewController拖动到”设置“ViewController”任务,您也可以选择导航控制器。你只需要在故事板中嵌入导航控制器,并为每个视图控制器定义故事板ID,你就完成了。只需使用视图控制器的storyboard id进行实例化,你就可以了。

ViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
[self.navigationController pushViewController:vc animated:YES];

除了分配故事板ID之外你不必担心故事板,没有ctrl +拖动东西。

我想到了一个更优雅的解决方案,即使用Container View。在显示每个ViewController的同时,您可以在Container View Controller中使用按钮切换SettingsViewController。 快乐的编码..

答案 2 :(得分:0)

你做不到。 segue只有一个源和一个目的地。您可以以编程方式实例化您的设置ViewController,并使用推送或使用礼物显示它。你应该想到的是为什么你必须从很多地方去设置。这可能是设计糟糕和代码重复的标志。通常,应用程序只有一个这样的按钮/操作,可以从多个屏幕(通过使用某种容器视图实现)或仅从一个屏幕访问。

答案 3 :(得分:0)

有一种方法可以做到这一点。创建根视图控制器和包含单个嵌入视图的匹配视图。将您的segue添加到此根控制器。然后在您的应用程序中,使用标准子容器技术切换其他视图控制器。这几乎是UINavigationControllers使用的概念。

这样做的一个优点是,如果您想拥有所有控制器都可见的公共元素,那么您可以将它们添加到根控制器。

但这一切都取决于你想要达到的目标。