[英]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.