1

我的转场被添加到故事板中。我想推送到一个视图控制器,比如 Deep_VC,与故事板中的下一个不同,比如 Next_VC。我正在使用:

Deep_VC *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"DeepVC"];
[self.navigationController pushViewController:controller animated:YES];

它去了那里,但我得到了错误。导航栏磁贴用于 Next_VC,而不是 Deep_VC,并且错误消息:

Finishing up a navigation transition in an unexpected state . . .
Unbalanced calls to begin/end appearance transitions . . .

我的 prepareForSegue 看起来像:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([[segue identifier] isEqualToString:@"toNextVC"]) {
        Next_VC *vc = [segue destinationViewController];
        vc.receivedData = [NSMutableArray arrayWithObjects:passData, nil];
    }
    if ([[segue identifier] isEqualToString:@"toDeepVC"]) {
        Deep_VC *vc = [segue destinationViewController];
        vc.receivedData = [NSMutableArray arrayWithObjects:passData, nil];
    }
}

有人可以帮忙吗?

4

1 回答 1

2

在您的情况下,我宁愿使用 performSegue 而不是 pushViewController。但是等等,如果你已经在情节提要中连接了你的 VC,你就不需要推送了。这将由 segue 自动完成。

编辑

if (login == successful) {
       [self performSegueWithIdentifier:@"toNextVC" sender:self];
} else {
       [self performSegueWithIdentifier:@"toDeepVC" sender:self];
}

之后 prepareForSegue 将被自动调用并在那里设置您的数据。不需要 pushViewController,因为序列会推送适当的 VC。

希望有帮助!

于 2012-11-16T02:03:17.343 回答