Ios 一段时间来统治他们所有人

Ios 一段时间来统治他们所有人,ios,swift2,segue,Ios,Swift2,Segue,我的故事板中有4个ViewController。我希望他们都能通过PerformScheue访问我的“设置”ViewController。 是否可以使用一个序列来执行此操作,而不是从每个ViewController按住ctrl键并拖动到我的“设置”ViewController 我真的不这么认为,有办法做到这一点。你应该将你的设置视图控制器连接到你所有的4个视图控制器,添加segue,并定义一个segue标识符,该标识符用于 prepareForSegue:sender: or should

我的故事板中有4个ViewController。我希望他们都能通过PerformScheue访问我的“设置”ViewController。
是否可以使用一个序列来执行此操作,而不是从每个ViewController按住ctrl键并拖动到我的“设置”ViewController

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

prepareForSegue:sender: 
or  
shouldPerformSegueWithIdentifier:sender: 
方法。您可以通过这些标识符访问分段。如果您找到“ctrl+从每个ViewController拖动到”设置“ViewController”任务,您也可以选择导航控制器。您只需将导航控制器嵌入到情节提要中,并为每个视图控制器定义情节提要Id,就完成了。只需使用要实例化的视图控制器的脚本id,就可以了

ViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
[self.navigationController pushViewController:vc animated:YES];
除了分配故事板id,你不必担心故事板,没有ctrl+拖动的事情

我想到了一个更优雅的解决方案,即使用容器视图。在显示每个ViewController时,可以在容器视图控制器中使用按钮切换,将ViewController设置为公共。
快乐编码..

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

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

这样做的一个优点是,如果您希望拥有对所有控制器可见的公共元素,则可以将它们添加到根控制器中


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

不,单靠一个环节是不可能的。您需要从4个不同的
视图控制器中选择4个不同的分段。但是你可以通过编程来实现

UIVIewController

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

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

如果要使用segue,则需要从每个源到目标都有一个segue。或者,您可以只实例化设置视图控制器,并在不使用segueI害怕这个答案的情况下推送/呈现它。事实上,我必须将所有四个控制器的分段拖到同一个控制器上,这实在是太难看了,但如果我必须这样做的话,我相信这可能会起作用。我会在电脑上试一试。