条形按钮项目能否同时连接到 IBAction 和 StoryBoard 到模态视图控制器?
Posted
技术标签:
【中文标题】条形按钮项目能否同时连接到 IBAction 和 StoryBoard 到模态视图控制器?【英文标题】:Can a Bar Button item connect to both IBAction and StoryBoard segue to a modal view controller at the same time? 【发布时间】:2013-02-06 00:44:47 【问题描述】:我有一个名为“完成”(系统按钮)的条形按钮项目,我有一个从这个按钮开始的 segue 来推动模态视图控制器。在推送模态 VC 之前,我有一些不能为空的数据字段。所以我有一个 IBAction 附加到完成按钮。在 IBAction 方法中,如果用户按下“完成”按钮并且数据为空,则会显示警报视图,否则我调用 performSegueWithIdentifier 来推送模态视图控制器。
当应用程序在模拟器模式下运行时,即使数据为空,按下“DOne”按钮也会推动模态 VC。我的 IBAction 方法没有被调用。但是,如果我删除 Segue,然后运行该应用程序,则会显示警报视图并显示正确的消息。
不可能在条形按钮项目上同时使用 IBAction/StoryBoard Segue 吗?下面是我的代码。我在故事板中创建了模态类型的 segue,标识符为“NewRelationDoneToEditRelationVCSegue”。
- (IBAction)newViewControllerDoneButtonPressed:(id)sender
if (self.groupSelected == NULL)
UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"Select Group" message: @"Please Select a Group for your Contact" delegate: self cancelButtonTitle:@"OK" otherButtonTitles:nil];
alert.alertViewStyle = UIAlertViewStyleDefault;
[alert show];
else
NSLog(@"test");
[self performSegueWithIdentifier:@"NewRelationDoneToEditRelationVCSegue" sender:self];
【问题讨论】:
不,你绝对可以。 【参考方案1】:问题已解决。我删除了从“完成”按钮到模态视图控制器的 segue。而是通过 CTRL 键从原始视图控制器底部最左边的小图标拖动到模态视图控制器来创建一个 segue。基本上创建了一个手动segue。它正在工作,因此栏按钮项目不能同时将 IBAction / segue 链接到它。它是任何一个。您必须创建一个手动 segue 来执行 IBAction,然后推送另一个视图控制器。也可以参考【这个问题】(Why a bar button item on a NavigationViewController won't trigger an IBAction"
【讨论】:
【参考方案2】:我假设它只是因为您的 groupSelected 布尔值不等于 NULL。当视图加载时,布尔默认为 no,除非初始化为 yes。更改您的 if 语句以检查其是否等于否。然后,当有人点击你的一件东西时,只需将其设置为是。很高兴。
【讨论】:
或者那不是布尔值?一个字符串? 'groupSelected' 是 NSString。我还在“if”语句之前添加了 NSLog 语句,它不打印测试消息。这意味着它甚至没有进入 IBAction 方法。但是如果我删除情节提要中的 segue,它会进入 IBAction 方法打印测试消息并向我显示警报视图。 好的,删除segue,看看它是否还会尝试执行segue。如果它没有崩溃,那么你有一些奇怪的事情发生了,(比如两个 segues 到同一个 vc 之类的) 我删除了segue,它崩溃了。我正在使用 XCode 版本 4.5.2 和 ios 6.0。它与新版本的 XCode 和 iOS 6.0 有关吗? segue 也是 Modal 类型。只要提供所有这些信息,也许会有所帮助。以上是关于条形按钮项目能否同时连接到 IBAction 和 StoryBoard 到模态视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章
我可以将一个对象连接到 iOS 中的更多 IBAction 吗?