繁体   English   中英

UITabBarController作为其子视图控制器的委托

[英]UITabBarController as a delegate of its sub view controllers

我目前有一个Storyboard,它的UITabBarController的子类链接到3个视图控制器。 这些视图控制器是UIViewController的自定义子类,我添加了“ delegate”属性,因为我需要从主视图控制器(从.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指针。

这是正确的方法吗? 我想念什么?

没关系,我正在访问UINavigationController,而不是其rootViewController。 我补充说:

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

它就像一个魅力!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM