我是ios应用程序开发的新手,我遇到了多次警告的麻烦。
我有一个加载表视图的导航控制器。 从该表视图中,对单元格的触摸会推动新的VC(基本上是单元格的细节)。 在那个“detailView”上,当按下某个按钮时,会推送另一个VC。
我使用以下代码推送最后一个VC:
- (IBAction)toMoreDetail:(id)sender
{
[self performSegueWithIdentifier:@"toMoreDetail" sender:self];
}
当我这样做时,会弹出2个警告:
2012-08-05 02:25:41.842 appName[2145:f803] nested push animation can result in corrupted navigation bar
2012-08-05 02:25:42.197 appName[2145:f803] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
到目前为止我没有找到任何好的答案。 也许任何人都可以帮我解决这个问题。
谢谢:)
编辑:这是另一个segue的代码:
从TableList到VC的详细信息(segue从原型单元开始,然后转到详细的vc):
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"toDetailEvent"])
{
NSInteger selectedIndex = [[self.tableView indexPathForSelectedRow] row];
DetailEvent* detailEvent = [segue destinationViewController];
detailEvent.eventToDisplay = [listEvents objectAtIndex:selectedIndex];
}
}
答案 0 :(得分:17)
我的猜测是你的按钮与segue相关联,所以当你在它上面添加一个IBAction
时,你会触发两次segue。
如果您转到故事板并单击segue,您应该能够看到其来源和目的地。它的起源是整个视图控制器还是只是按钮?如果原点是整个视图控制器,则只需手动performSegue
。您可以尝试注释掉[self performSegueWithIdentifier:@"toMoreDetail" sender:self];
内容,看看它是否有用吗?
答案 1 :(得分:1)
看起来如果你使用故事板并将你的segue从源vc连接到目标vc并使用didSelectRow调用segue,你就不能为segue选择留下else语句: 这有效:
if ((indexPath.row == 0 && indexPath.section == 0)) {
[self performSegueWithIdentifier:@"simpleLines" sender:self];
}
if ((indexPath.row == 0 && indexPath.section == 5)) {
[self openAppStore];
}
if (indexPath.section == 4) {
[self performSegueWithIdentifier:@"pushSettingsVC" sender:self];
}
这不起作用:
if ((indexPath.row == 0 && indexPath.section == 0)) {
[self performSegueWithIdentifier:@"simpleLines" sender:self];
}
if ((indexPath.row == 0 && indexPath.section == 5)) {
[self openAppStore];
}
else {
[self performSegueWithIdentifier:@"pushSettingsVC" sender:self];
}
使用导航控制器时会出现奇怪的双重推动。我每次开始一个项目时都会这样做,并且总是忘记它为什么会发生。下次我