IOS中的导航堆栈管理

时间:2015-03-27 06:46:20

标签: ios objective-c ios8.1

当我们在导航堆栈上推送页面时,我想知道如果我可以将最大页数限制为10左右到r。例如,

如果限制为4:     A - > B - > C - > d 现在D在顶部,A是根。 当我尝试按E时,它应该从堆栈中删除B.因为我需要rootVC保持原位。 结果应该是:     A - > C - > D - >即

另外,我知道如何删除View控制器并将其添加到堆栈中,我的问题是如何在应用程序运行时跟踪navStack。

2 个答案:

答案 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.
}