0

私はこのメソッドを使用してUIScrollView、クラスの1つでのプロパティにアクセスしようとしています。

AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
UINavigationController *nav = delegate.frontViewController.navigationController;
for (UIViewController *controller in nav.viewControllers) {
    if ([controller isKindOfClass:[SGInitialViewController class]]) {
        SGInitialViewController *sgInitialController = (SGInitialViewController *)controller;
        SGPlotViewController *plotVC = [sgInitialController.childViewControllers objectAtIndex:0];
        [plotVC.scrollViewMain setUserInteractionEnabled:NO];
    }

クラスはSGInitialViewController現在ロードされており、ロードさて画面にも表示されています。どんなに頑張っても、その性質を変えることはできません。私が間違っていることについて何か考えはありますか?childViewController SGPlotViewController

4

1 に答える 1

1

アプリの全体的な構造について詳しく知らなければ、問題がどこにあるのかを知ることは困難です。ただし、これらすべてのコントローラーを掘り下げてプロパティに到達することは、適切な設計ではありません。デリゲートを使用できる場合は、それを行う必要があります。ただし、これらすべてのコントローラーの設定方法によっては、クラスが自分自身をデリゲートとして設定できるように、適切な参照を取得するのが難しい場合があります。そのような場合は、通知を使用するのがおそらく最善です。質問にあるコードが含まれているクラスには通知を投稿する必要があり、その通知を受信するにはSGPlotViewControllerを登録する必要があります。

于 2013-01-29T16:35:10.720 に答える