【发布时间】:2013-12-12 10:14:07
【问题描述】:
我有一个表格视图,其中包含不同类型的表格视图单元格。在其中一个单元格中,有两个按钮,按下时会加载视图控制器。我正在使用以下函数来处理按钮按下:
- (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.
在我的情况下,它会导致崩溃,因为有一个事件我希望应用程序立即弹出视图控制器,以便返回到我的表格视图。我为此使用 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];
}
}
在这种情况下,视图控制器被完美地推送,甚至在需要时立即弹出。我正在 iOS7 和 Xcode 5 上对此进行测试。我以前没有遇到过这样的问题,非常感谢任何帮助。
【问题讨论】:
-
您确定您已在界面生成器中正确连接操作吗?也许您已经将事件连接起来,例如,既可以触及内部,也可以触及内部,而不是仅仅触及内部。或者,也许您还从两个代码中分配了 segue,并在界面生成器中再次分配。你检查过吗?这是一个常见的错误。
-
哦该死的..你说得对,我也在表格视图数据源方法中分配了我的按钮..谢谢你的回答!
标签: ios iphone objective-c ios7 segue