0

请你帮我解决一个问题:

我有一个带有初始控制器 InitController 的导航控制器和 4 个视图控制器:A、B、C、ModalViewController。我推动控制器 A->B->C 并呈现 ModalView。当我关闭 ModalView 并返回 C 时,导航项已损坏:在导航项中,我看到标题“A”、右键“编辑”和带有文本“< C”的后退按钮,但内容属于 C 视图。按下后退按钮“< C”后,我看到了正确的导航项,即标题为“C”、右键“上一个/下一个”和后退按钮“< B”。

在一个viewDidLoad

[self.navigationItem setTitle:@"A"];
self.navigationItem.rightBarButtonItem = [self editButton];
if ([self.model gotoB]) {
    [self.navigationController pushViewController:B animated:NO]; 
}

在 B 中viewDidLoad

[self.navigationItem setTitle:@"B"];
self.navigationItem.rightBarButtonItem = [self editButton];
if ([self.model gotoC]) {
    [self.navigationController pushViewController:C animated:NO]; 
}

在 C 中viewDidLoad

[self.navigationItem setTitle:@"C"];
[self.navigationItem setRightBarButtonItem:self.nextPrevRightButton];
if ([self.model showModalView]) {
    [ModalViewController setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
    [ModalViewController setDelegate:self];
    [self presentViewController:ModalViewController animated:YES completion:nil]; 
}

在 C 中-(void) dismissModalController:(UIViewController *)sender

[self dismissViewControllerAnimated:YES completion:nil];
4

1 回答 1

0

我找到了一个解决方案,一开始我忘了提到 A 不是初始控制器,我实际上也在初始控制器中将它推送到堆栈,但我是用animated:YES. 这是错误的,即最后一个模态视图控制器只需要呈现animated:YES.

这个问题的答案将多个视图控制器推送到导航控制器堆栈上的问题实际上帮助我解决了我的问题。

于 2013-09-02T09:15:19.540 回答