状态保存,导航控制器堆栈保存和导航栏上的手势识别器

时间:2012-10-29 13:21:42

标签: iphone ios cocoa-touch state-saving

我正在加载我的视图控制器:

NSArray *viewControllerNames = [NSArray arrayWithContentsOfFile:path];
    for (NSString *viewControllerClass in viewControllerNames) {

        NSString *filePath = [self filePathForClass:NSClassFromString(viewControllerClass)];
        if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
            id viewController = [NSKeyedUnarchiver unarchiveObjectWithData:[NSData dataWithContentsOfFile:filePath]];

            [self pushViewController:viewController animated:NO];
        }
    }

在我的堆栈的根视图控制器上,我在导航栏中添加了一个手势识别器。

但是,如果我将一些视图控制器推到顶部,它将不会加载此手势,因为根视图控制器的viewDidLoad未被调用,并且如果我访问viewControllers属性{{ 1}}它返回nil。

有关如何继续此动作的任何想法?谢谢!

1 个答案:

答案 0 :(得分:1)

如何使用setViewControllers:animated:而不是逐个推送单个视图控制器?

NSMutableArray * viewControllers = [[NSMutableArray alloc] init];
for(...) { // the same for loop you have 
    ...
    [viewControllers addObject:viewController];
}
[self setViewControllers:viewControllers animated:YES];