2

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

2 回答 2

17

我的猜测是您的按钮与 segue 相关联,因此当您在其上添加一个IBAction时,您会触发 segue 两次。

如果你去你的 Storyboard 并点击 segue,你应该能够看到它的起点和终点。它的起源是整个视图控制器还是按钮?performSegue如果原点是整个视图控制器,您只需要手动操作。你可以尝试注释掉你的[self performSegueWithIdentifier:@"toMoreDetail" sender:self];东西,看看它是否会起作用?

于 2012-08-05T04:14:45.083 回答
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];
}

使用导航控制器时,你会得到一个奇怪的双推。我每次开始一个项目时都会这样做,但总是忘记它为什么会发生。下次我

于 2013-04-25T21:50:40.600 回答