我目前有一个情节提要,其中 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 指针。
这是正确的方法吗?我错过了什么?