当我们在导航堆栈上推送页面时,我想知道如果我可以将最大页数限制为10左右到r。例如,
如果限制为4: A - > B - > C - > d 现在D在顶部,A是根。 当我尝试按E时,它应该从堆栈中删除B.因为我需要rootVC保持原位。 结果应该是: A - > C - > D - >即
另外,我知道如何删除View控制器并将其添加到堆栈中,我的问题是如何在应用程序运行时跟踪navStack。
答案 0 :(得分:1)
试试这段代码:
- (void)limitNavigationStack{
NSMutableArray* controllers= [self.navCtrl.viewControllers mutableCopy];
if(controllers.count> MAX_CONTROLLERS){
[controllers removeObjectAtIndex:1]; // Remove first object after root
[self.navCtrl setViewControllers:controllers];
}
}
您可以将此代码放在appDelegate中,并从viewController的viewDidLoad
调用它。
为了使它更具通用性,您可以从基本视图控制器继承并从其viewDidLoad
答案 1 :(得分:0)
UINavigationController
有一个名为viewControllers
的媒体资源。现在就在你要推出一个新的视图控制器之前,你可以随时检查self.navigationController.viewControllers
中有多少个对象
如果超出限制,则可以手动进行导航堆栈管理。
if(self.navigationController.viewControllers.count > limitCount) {
// Do the stack management manually for nav controller.
}