从导航堆栈中删除viewcontrollers
我有一个导航堆栈,说5个UIViewControllers。 我想通过点击第五个viewcontroller中的一个button来删除堆栈中的第三个和第四个viewcontroller。 是否有可能做到这一点? 如果这样怎么样?
使用此代码并享受:
NSMutableArray *navigationArray = [[NSMutableArray alloc] initWithArray: self.navigationController.viewControllers]; // [navigationArray removeAllObjects]; // This is just for remove all view controller from navigation stack. [navigationArray removeObjectAtIndex: 2]; // You can pass your index here self.navigationController.viewControllers = navigationArray; [navigationArray release];
希望这会帮助你。
您可以先获取数组中的所有视图控制器,然后在检查相应的视图控制器类之后,可以删除所需的视图控制器。
这是一小段代码:
NSArray* tempVCA = [self.navigationController viewControllers]; for(UIViewController *tempVC in tempVCA) { if([tempVC isKindOfClass:[urViewControllerClass class]]) { [tempVC removeFromParentViewController]; } }
我想这会让你的工作更轻松。
Swift 3:
self.navigationController!.viewControllers.removeAll()
self.navigationController?.viewControllers.remove(at: "insert here a number")
Swift 2.1:
移除所有:
self.navigationController!.viewControllers.removeAll()
删除索引
self.navigationController?.viewControllers.removeAtIndex("insert here a number")
还有更多可能的操作,比如removeFirst,range等
Swift 2.0:
var navArray:Array = (self.navigationController?.viewControllers)! navArray.removeAtIndex(navArray.count-2) self.navigationController?.viewControllers = navArray
如果你想从第五视图控制器移动到第二视图控制器(跳过第三和第四),你想使用[self.navigationController popToviewController:secondViewController]
。
您可以从导航控制器堆栈中获取第二个控制器。
secondViewController = [self.navigationController.viewControllers objectAtIndex:yourViewControllerIndex];
- 如何删除所有导航栏后退button标题
- 如何防止屏幕locking我的应用程序与IOS快速
- 在iOS中的App Delegate中调用当前视图控制器中的方法
- 故事板和SVN冲突
- UIView和initWithFrame和一个NIB文件。 我怎样才能得到加载的NIB文件?
- 如何解决iOS 7上的UITableView分隔符?
- 如何在Swift中打印“catch all”exception的详细信息?
- UIWebView查看自签名的网站(没有私人API,而不是NSURLConnection) – 这是可能的吗?
- 推送多个详细视图控制器时,“DetailViewController的开始/结束外观转换的不平衡调用”