1

我目前有一个情节提要,其中 UITabBarController 的子类链接到 3 个视图控制器。这些视图控制器是 UIViewController 的自定义子类,我添加了一个“委托”属性,因为我需要从主视图控制器(从 .plist 文件中检索)访问一个属性(设置)。这是一个设置类,用于处理从/向该文件读取和写入。

无论如何,我还没有找到如何从 IB 设置他们的委托属性,所以我在代码中添加了这个:

- (void)viewDidLoad
{
    [super viewDidLoad];

    /* Fetch settings */
    NSString* settingsPath = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"plist"];   // Load settings from file
    settings = [[Settings alloc] initWithContentOfFile:settingsPath];

    for (UIViewController<HasDelegate> *c in [self viewControllers]) {
        c.delegate = self;
    }
}

但只有第一个视图控制器(启动应用程序时显示的那个)可以访问它。其他的有一个代表属性的 nil 指针。

这是正确的方法吗?我错过了什么?

4

1 回答 1

0

没关系,我访问的是 UINavigationController,而不是它的 rootViewController。我补充说:

if([c isKindOfClass:[UINavigationController class]]) {
    NSLog(@"UINavigationController");
    UINavigationController *navC = (UINavigationController*)c;
    [[[navC viewControllers] objectAtIndex:0] setDelegate:self];
}

它就像一个魅力!

于 2013-01-29T15:01:40.703 回答