如何创建可以从以编程方式创建的按钮调用的segue?

Clé*_*lon 23 uistoryboard segue uistoryboardsegue swift

在Swift中,我有一个使用programmaticaly创建的按钮:

var button = UIBarButtonItem(title: "Tableau", style: .Plain, target: self, action: "tabBarTableauClicked")
Run Code Online (Sandbox Code Playgroud)

我希望当用户单击该按钮时,它会更改viewControllers.这是以下代码tabBarTableauClicked:

func tabBarTableauClicked(){
    performSegueWithIdentifier("tableau", sender: self)
}
Run Code Online (Sandbox Code Playgroud)

但它显然不起作用,因为没有带有名为"tableau"的标识符的segue.

我无法使用Ctrl +单击按钮创建一个segue并拖动到第二个viewController,因为按钮是以编程方式创建的,而不是在Storyboard中创建的.

如何在Swift中以编程方式创建带有标识符的segue?

vac*_*ama 84

以下是如何设置segue以便可以通过编程方式调用它.

  • 控制从第一个视图控制器中的ViewController图标拖动到第二个视图控制器.
  • 单击两个视图控制器之间的segue箭头,在右侧的Attributes Inspector中,为segue指定一个标识符(在您的情况下为tableau).
  • 然后,您可以在代码中使用performSegueWithIdentifier触发segue .

在此输入图像描述

您可以在此处阅读有关设置和使用segue的更多信息.

  • 这个问题的重点不在于编程吗? (22认同)
  • @MarkLöwe,OP希望通过编程方式创建的按钮触发segue.他错误地认为segue无法接线,因为故事板中不存在按钮.我向他展示了只要两个VC存在于Storyboard中就可以连接segue,然后以编程方式创建的按钮可以触发segue.我解决了他想做的事,如果不是他的问题究竟是什么. (4认同)
  • @Honey,如果segue是从按钮连接的,你不需要调用`performSegue(withIdentifier:sender:)`因为iOS会为你触发segue.如果要以编程方式触发segue,则应该从viewController连接它. (2认同)