【问题标题】:How do I create a segue that can be called from a button that is created programmatically?如何创建可以从以编程方式创建的按钮调用的 segue?
【发布时间】:2014-12-14 22:10:52
【问题描述】:

在 Swift 中,我有一个以编程方式创建的按钮:

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

我希望当用户单击按钮时它会更改视图控制器。 这是tabBarTableauClicked的代码:

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

但它显然不起作用,因为没有名为“tableau”的标识符的segue。

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

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

【问题讨论】:

  • 无法在情节提要之外创建转场。 stackoverflow.com/questions/9674685/…
  • 你的第一个和第二个视图控制器在情节提要中吗?
  • 是的,但按钮不是
  • 只要您有两个视图控制器在情节提要中,那么您就可以在那里创建转场并以编程方式触发它们。您不需要故事板中的按钮来触发 segue,拥有该按钮所在的视图控制器就足够了!

标签: swift segue uistoryboard uistoryboardsegue


【解决方案1】:

这里是如何设置一个 segue 以便可以通过编程方式调用它。

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

您可以阅读更多关于设置和使用 segues here.

【讨论】:

  • 我试过这个,但我仍然得到同样的“没有标识符'someIdentifier'的segue”错误......
  • @MarkLöwe,OP 想要从他以编程方式创建的按钮触发一个转场。他错误地认为 segue 无法连接,因为故事板中不存在该按钮。我向他展示了只要两个 VC 都存在于 Storyboard 中,就可以连接 segue,然后以编程方式创建的按钮可以触发该 segue。我解决了他想做的事情,如果不完全是他的问题。
  • @someguy 你需要在你的视图控制器之间点击故事板上的segue图标,然后在右边的菜单中,给它一个标识符
  • @Honey,如果 segue 是通过按钮连接的,则无需调用 performSegue(withIdentifier:sender:),因为 iOS 会为您触发 segue。如果你想以编程方式触发 segue,你应该从 viewController 连接它。
  • @Honey,它执行连接到按钮的segue,并将按钮作为sender发送。这是Apple的文档。 developer.apple.com/library/content/featuredarticles/…
猜你喜欢
  • 1970-01-01
  • 2012-03-29
  • 1970-01-01
  • 2023-03-25
  • 2018-09-10
  • 1970-01-01
  • 2011-06-29
  • 1970-01-01
相关资源
最近更新 更多