Uinavigationcontrollerがあります。ログインした後、UInavigationcontrollerスタックからRegisterViewController、LoginViewControllerなどのビューコントローラを削除します。
特定のView Controllerをスタックから削除する必要があるということですか?その可能性。 ?
私はこの投稿をチェックしました
だから私たちはそれを次のような配列に入れることができます
NSArray *allviewcontrollers= [(UINavigationController *)navigationController viewControllers];
しかし、さらなるプロセスを行う方法..この質問は私を長い間私を狩っています。私に答えてください..事前に感謝します
NSMutableArray *allViewControllers = [NSMutableArray arrayWithArray: navigationController.viewControllers];
[allViewControllers removeObjectIdenticalTo: removedViewController];
navigationController.viewControllers = allViewControllers;
これが私の解決策です。タグまたは固定プロパティをビューコントローラーに設定すると、uinavigationcontrollerスタックをトラバースして、ターゲットのビューコントローラー(vcToRemove)を検索して削除できます。これはより安全かもしれません。コード:
NSInteger tag = vcToRemove.wvTag;
NSMutableArray *allViewControllers = [NSMutableArray arrayWithArray: vcToRemove.navigationController.viewControllers];
int i = 1;
for (i = 1; i <=[allViewControllers count]; i++) {
UIViewController *vc = [allViewControllers objectAtIndex:i];
if ([vc isKindOfClass:[MyWebViewController class]]) {
if (((MyWebViewController *)vc).wvTag == tag) {
[allViewControllers removeObjectAtIndex:i];
break;
}
}
}
vcToRemove.navigationController.viewControllers = allViewControllers;