iOS segue执行两次

我有一个表视图与不同types的表视图单元格中。 在其中一个单元格中,有两个button,当按下时加载视图控制器。 我正在使用下面的函数来处理button按下:

- (IBAction)leftButtonPressed:(id)sender { // Getting the pressed button UIButton *button = (UIButton*)sender; // Getting the indexpath NSIndexPath *indPath = [NSIndexPath indexPathForRow:button.tag inSection:0]; // Loading the proper data from my datasource NSArray *clickedEvent = [[[SOEventManager sharedEventManager] eventsArray] objectAtIndex:indPath.row]; [[SOEventManager sharedEventManager] setSelectedEvent:clickedEvent[0]]; // Everything working as it should up to this point // Performing seque... [self performSegueWithIdentifier:@"buttonSegue" sender:self]; } 

我的buttonSegue应该推出一个新的视图控制器。 不知怎的,推一次,似乎是推两次,所以我得到以下警告:

 2013-11-27 01:48:30.894 Self-Ordering App[2081:70b] nested push animation can result in corrupted navigation bar 2013-11-27 01:48:31.570 Self-Ordering App[2081:70b] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted. 

在我的情况下,它导致崩溃,因为有一个事件,我希望应用程序立即popup视图控制器,所以它回到我的表视图。 我为此使用了一个alertview,并使用以下命令处理事件:

 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { NSString *buttonTitle = [alertView buttonTitleAtIndex:buttonIndex]; // ... // Additional checking of button titles.... else if ([buttonTitle isEqualToString:NSLocalizedString(@"Vissza", nil)]) { [self.navigationController popViewControllerAnimated:YES]; } } 

我可能会注意到,我有一个从我的“常规”表格视图单元格的其他segue,在这种情况下,我使用prepareForSegue:方法

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"detailSegue"]) { NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; SOEvent *selectedEvent = [[[SOEventManager sharedEventManager] eventsArray] objectAtIndex:indexPath.row]; [[SOEventManager sharedEventManager] setSelectedEvent:selectedEvent]; } } 

在这种情况下,视图控制器被完美地推动,甚至如果需要立即popup。 我在iOS7和Xcode 5testing这个。我没有遇到过这样的问题,任何帮助将不胜感激。

通过回答canpoyrazoğlu

你确定你已经在界面构build器中正确地连接了这些动作吗? 也许你已经把事件联系起来了,比如说,摸一摸里面的内容,然后触摸一下里面的内容,而不是直接接触内部。 或者您也可以在代码中再次分配segue,并在界面构build器中再次分配segue。 你有检查他们吗? 这是一个常见的错误。 –

我为每个button的内部动作分配了故事板和我的tableview的数据源方法。

感谢您的快速帮助可以poyrazoğlu

也许你想用视图控制器而不是UIButtons来连接你的游戏!

你可能应该有一些像这样的button连线: 在这里输入图像说明

但是你应该用视图控制器来连接它们: 在这里输入图像说明

对于Swift 3,xcode和ios 9+,这是我使用的:确保你从你的UIViewControllers而不是button或其他接口绘制segue。

我有同样的问题,只是改变从UIController而不是button删除此错误的Segue的开始。

当我的button直接连接到目标视图控制器时,我总是遇到这个问题。 您需要确保您首先删除您所做的旧segue,然后单击当前的视图控制器(您来自哪里),然后按住CTRL并单击目标控制器。

这应该修复它:)