【问题标题】:How to create a static delegate from main-viewcontroller?如何从主视图控制器创建静态委托?
【发布时间】:2011-07-03 03:55:40
【问题描述】:

希望有人可以帮助我学习一些有关 iOS 编程中委托的新知识。

我有一个“MainViewController”,它是应用程序启动时的第一个 VC。我有一种具有不同 UIImageViews 的模型选择,在选择其中一个之后,我正在推动一个新的 VC。我想用一个委托处理 modelChoice,所以所有其他 viewController 都可以监听它并根据用户的选择采取行动。

但这是否意味着我必须在每个 VC 中分配一个“MainViewController”的新实例?对此有什么解决方案?我如何创建(我认为它被称为)静态委托?

如果能学到这一点就太好了.. 谢谢分享。。

【问题讨论】:

    标签: iphone delegates uiviewcontroller


    【解决方案1】:

    您可以将 MainViewController 设为单例类:

    static  MainViewController* ctrl = nil;
    +(MainViewController*) sharedInstance {
       @synchronized( ctrl ) {
           if( !ctrl ) {
               ctrl = [[MainViewController alloc] init];
           }
       }
    
       return ctrl;
    }
    

    然后你可以像这样从任何类访问它:[MainViewController sharedInstance]。

    您还可以向 MainViewController 添加方法,例如:

    -(void) addListener:(NSObject<ListenerProtocol>*) listener;
    

    当您创建其他视图控制器时调用:

    [[MainViewController sharedInstance] addListener: newVC];
    

    【讨论】:

    • 嗨,马克斯。感谢您的快速回复。您能否解释一下与以下单例实现有什么区别? SINGLETON CLASS
    • 其实没有区别。这是创建单例的标准方式。这是一个普通类(带有 ivars、属性等),但它只有一个实例。
    猜你喜欢
    • 2021-03-12
    • 1970-01-01
    • 2015-07-27
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    相关资源
    最近更新 更多