1

現在、3 つのビュー コントローラーにリンクされた UITabBarController のサブクラスを持つストーリーボードがあります。これらのビュー コントローラーは 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;
    }
}

ただし、最初のView Controller(アプリの起動時に表示されるもの)のみがアクセスできます。他のものには、delegate プロパティの nil ポインターがあります。

それは正しい方法ですか?何が欠けていますか?

4

1 に答える 1

0

rootViewController ではなく、UINavigationController にアクセスしていました。追加した :

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

そしてそれは魅力のように機能します!

于 2013-01-29T15:01:40.703 に答える