1

我弹出到所需的视图控制器,但 uinavigationbar 和 uinavigationitem 没有显示正确的名称,我必须单击后退按钮(uinavigationitem)才能在导航栏上看到正确的名称。

我在用

     YTOCalculatorViewController * parent = (YTOCalculatorViewController *)self.controller;
     [self.navigationController popToViewController:parent animated:YES];

为了显示 YTOCalculatorViewController。我已经把这段代码放在viewcontroller的viewwilldisappear中,从我想去YTOCalculatorViewController的地方,但是虽然它弹出到正确的viewcontroller,但导航栏显示错误的名称,点击后退按钮后,它显示正确的名称。

例如我在堆栈 C B A

在这种情况下,A 是 YTOCalculatorViewController。在显示 C 的时候,我保存了信息,我想再次显示 A,所以我使用上面的代码。

如果我从 A 到 C 再回到 C 到 A 多次 x,那么当我到达 A 时,我必须在后退按钮上单击 x 次才能看到属于 A 的正确 uinavigationbar 的名称. uinavigationbar 显示 B 视图控制器的名称,而不是显示 A 的名称。

对不起,如果我不够清楚,我希望你能理解我的问题。

4

1 回答 1

0

看来你正试图从一个自我跳到另一个自我..

如果你想弹出到某个已经被推送的特定控制器。假设你已经推送了 A->B->C->D,你目前在D上并且想要弹出B,你应该执行以下操作

for(UIViewController *controller in [self.navigationController viewControllers]){
    if([controller isKindOfClass:[B class]]){
        [self.navigationController popToViewController:controller animated:YES];
        break;
    }

}

以上应该可以正常工作.. 上面的代码在语法上可能不正确,如果是,请更正。

于 2013-02-11T12:31:28.820 回答