簡體   English   中英

后退按鈕不返回

[英]back button doesn't go back

使用此代碼推送ViewController之后

UIViewController *vc = [[self storyboard] instantiateViewControllerWithIdentifier:@"frontCardViewController"];
[self.navigationController pushViewController:vc animated:YES];

我使用此代碼刪除了不再需要的所有ViewController

NSMutableArray *navigationArray = [[NSMutableArray alloc] initWithArray:self.navigationController.viewControllers];
NSArray *array = [[NSArray alloc] initWithArray:navigationArray];
for (UIViewController *viewController in array) {
    if ([viewController isKindOfClass:[RITCardViewController class]]) {
            RSLog(@"Is kind of Class RITCardViewController");
            [navigationArray removeObject:viewController];
    }
}
self.navigationController.viewControllers = navigationArray;

導航數組現在如下所示:

"RITMainViewController: 0x10d81fc1>",
"RITDetailViewController: 0x10d847880",
"RITTestResultViewController: 0x113d0e090"

但是問題在於,如果現在按下導航欄中的后退按鈕,它將返回到第二個屏幕。 但是當再次按下后退按鈕時,它僅停留在該屏幕上。 它似乎穿過了我刪除的所有屏幕,但沒有顯示出來。

我究竟做錯了什么?

嘗試這樣的事情:

NSMutableArray *viewControllers = [@[] mutableCopy];
for (UIViewController *vc in self.nagivationController.viewControllers)
{
    if (NO == [vc isKindOfClass:[RITCardViewController class]])
        [viewControllers addObject:vc];
}
self.navigationController.viewControllers = viewControllers;

通過從視圖控制器數組中刪除當前使用的視圖控制器,確保不破壞堆棧。 假設您當前的視圖控制器不是RITCardViewController的實例, RITCardViewController應該沒問題。 否則,您必須在代碼中對此進行彌補。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM