我的问题非常类似于:Swift: Make button trigger segue to new scene
问题是:
我有一个视图控制器,带有一个按钮,可以使另一个视图控制器以模态方式显示。
我有 Ctrl +单击从按钮到第二个视图控制器,并在IB中创建了segue。
然后我再次按
我认为按钮现在会做两件事:a)调用IBAction方法,b)执行segue。
由于某种原因,只发生了什么。
当我删除segue或从IB中删除对视图控制器的调用时,会调用IBAction,但Xcode告诉我现在无法访问第二个视图控制器。
我希望能够向用户呈现一个ActionSheet,然后能够根据用户从操作表中选择的内容,执行Sese到第二个视图控制器。
我知道我可以以编程方式调用performSegue
,但这需要创建segue并将其附加到IB中的物理按钮,这违背了不调用按钮可能已有的IBAction的目的。
答案 0 :(得分:5)
如果我想在调用segue之前做一些额外的步骤,我通常会将一个IBAction附加到UIButton,并在代码中从此调用perform segue。您可以在故事板中添加segue并为其提供ID,而无需将其连接到按钮。您可以通过控制单击viewcontroller并拖动到storyboard中的下一个viewcontroller来执行此操作。
答案 1 :(得分:2)
从故事板连接segue将自动执行segue。您可以在prepareForSegue
方法中为转换到新视图控制器做任何准备。
如果之前存在某些逻辑,例如用户从操作表中选择某些内容,则只需使用IBAction,然后根据用户选择使用performSegueWithIdentifier
执行segue。但是,您不必创建另一个按钮,只需从一个视图控制器到另一个视图控制器ctrl+drag
,并为segue指定标识符。