如何使用情节提要从 UIBarButtonItem 触发转场?

Posted

技术标签:

【中文标题】如何使用情节提要从 UIBarButtonItem 触发转场?【英文标题】:How can I trigger a segue from UIBarButtonItem using storyboards? 【发布时间】:2014-03-23 09:58:57 【问题描述】:

我的 UIViewController 子类定义了一个有效的“- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender”,segue 被列为从 UIBarButtonItem 到目标控制器的连接,但 prepareForSegue 永远不会触发.不过,该按钮会以动画方式显示已发生点击。

也没有与我定义的按钮相关的其他操作。有没有特殊的方式来处理 UIBarButtonItems?

【问题讨论】:

segue是否正常工作,只是prepareForSegue没有触发?或者您是否可以看到按钮为点击设置动画,但您并没有被目标 vc 所束缚? 抱歉浪费了大家的时间。这是一个吞噬所有触摸的手势识别器(即使按钮正在动画)。 【参考方案1】:

在按钮的动作中,尝试调用这个方法:

[self performSegueWithIdentifier:@"YourSegueName" sender:self];

这应该会触发prepareForSegue 方法。

【讨论】:

我完全理解触发segue的方法。那么连接的目的是什么? 您是在告诉系统两者之间存在联系。在代码中,您没有详细说明目的地是什么。系统查找提供的连接名称(segue 名称),从而找到目标视图控制器 你应该从 vc 本身而不是按钮中进行 segue。无论如何,按钮都需要一个动作,否则什么都不会发生。转场本身并不是行动。这只是一条路径。 我以为我明白了这一切......但是,如果我在场景中添加一个按钮并将触发的 segue 从它添加到 vc,则在没有按钮操作的情况下调用 prepareForSegue。这就是我想要理解的。普通按钮和 UIBarButtonItem 的区别。 好吧,那肯定还有什么问题。我刚刚尝试了这两种情况:有两个视图控制器,添加一个带有触发 segue 的 uibutton,并将按钮替换为带有触发 segue 的 uibarbuttonitem。在这两种情况下,prepareForSegue 都会被触发,并且 segue 会按预期工作。当然,这两种情况都使用 uinavigationcontroller,这是使用 push segues 所必需的......

以上是关于如何使用情节提要从 UIBarButtonItem 触发转场?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中更改 UIBarButtonItem 的 tintColor?

无法将 Action 设置为在情节提要上创建的 UIBarButtonItem

如何从情节提要中隐藏 UISearchbar

如何从情节提要以编程方式加载 UIViewController?

如何使用情节提要从自定义 uitableviewcell 正确启动弹出框转场

如何从情节提要文件中获取现有的控制器对象?