1

我有一个名为“完成”(系统按钮)的条形按钮项目,我有一个从这个按钮开始的 segue 来推动模态视图控制器。在推送模态 VC 之前,我有一些不能为空的数据字段。所以我有一个 IBAction 附加到完成按钮。在 IBAction 方法中,如果用户按下“完成”按钮并且数据为空,则会显示警报视图,否则我调用 performSegueWithIdentifier 来推送模态视图控制器。

当应用程序在模拟器模式下运行时,即使数据为空,按下“DOne”按钮也会推动模态 VC。我的 IBAction 方法没有被调用。但是,如果我删除 Segue,然后运行该应用程序,则会显示警报视图并显示正确的消息。

不可能在 Bar Button 项目上同时拥有 IBAction/StoryBoard Segue 吗?下面是我的代码。我在故事板中创建了带有标识符“NewRelationDoneToEditRelationVCSegue”的模态类型的segue。

- (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];
}
4

2 回答 2

2

问题已解决。我删除了从“完成”按钮到模态视图控制器的 segue。而是通过 CTRL 键从原始视图控制器底部最左边的小图标拖动到模态视图控制器来创建一个 segue。基本上创建了一个手动segue。它正在工作,因此栏按钮项目不能同时将 IBAction / segue 链接到它。它是任何一个。您必须创建一个手动 segue 来执行 IBAction,然后推送另一个视图控制器。您也可以参考 [this question] ( Why a bar button item on a NavigationViewController won't trigger an IBAction "

于 2013-02-06T18:40:38.903 回答
1

我假设它只是因为您的 groupSelected bool 不等于 NULL。当视图加载时,布尔默认为 no,除非初始化为 yes。更改您的 if 语句以检查其是否等于否。然后,当有人点击你的一件东西时,只需将其设置为是。很好走。

于 2013-02-06T00:51:53.897 回答