0

我正在使用这种方法来尝试获取UIScrollView我的一个类中的属性:

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 回答