2014-10-20 61 views
21

在斯威夫特我programmaticaly使用创造了一个按钮:如何创建一个可以从编程创建的按钮调用的segue?

var button = UIBarButtonItem(title: "Tableau", style: .Plain, target: self, action: "tabBarTableauClicked") 

我想,当用户点击该按钮它改变viewControllers。 这里是tabBarTableauClicked代码:

func tabBarTableauClicked(){ 
    performSegueWithIdentifier("tableau", sender: self) 
} 

但它显然不工作,因为没有与所谓的“画面”的标识符没有SEGUE。

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

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

+1

塞格斯不能在故事板之外建立。 http://stackoverflow.com/questions/9674685/creating-a-segue-programmatically – user3746428 2014-10-20 00:37:47

+0

你的第一个和第二个视图控制器在故事板? – vacawama 2014-10-20 01:07:54

+0

是的,但它们只是按钮不是 – 2014-10-20 01:08:59

回答

81

这里是如何设置一个segue,以便它可以通过编程方式调用。从在第一视图控制器向第二视图控制器的ViewController图标

  • 控制阻力。
  • 点击SEGUE箭头两个视图控制器之间,并在属性检查器右边,给SEGUE标识符(画面你的情况)。
  • 然后,您可以在代码中触发与performSegueWithIdentifier的继续。

enter image description here

你可以阅读更多关于设置和使用塞格斯here.

+0

我试过这个,但我仍然得到相同的“没有标识符'someIdentifier'的错误'”错误... – SomeGuy 2016-02-13 15:32:14

+17

是不是这个问题的要点做它程序设计? – 2016-02-21 22:34:55

+3

@MarkLöwe,OP想要从他以编程方式创建的按钮触发一个segue。他错误地认为由于该故事板中不存在该按钮,因此无法连线。我向他展示了只要两个VC都存在于Storyboard中,就可以连接Segue,然后以编程方式创建的按钮可以触发该Segue。我解决了他想要做的事情,如果不是他提出的问题。 – vacawama 2016-02-21 22:46:04