我有一个 UIView 我需要从我的应用程序周围访问属性。我知道你不能在 UIView 对象周围创建一个 Singleton,那么做类似的好方法是什么?
例如,视图有一个标签。从我的应用程序中的任何视图控制器,我希望能够更改此视图的文本(位于父视图控制器中)。
谢谢。
编辑:
成功!使用 KVO 跟踪我的 Singleton 对象的变化很有魅力,而且是一个非常简单的解决方案。
我有一个 UIView 我需要从我的应用程序周围访问属性。我知道你不能在 UIView 对象周围创建一个 Singleton,那么做类似的好方法是什么?
例如,视图有一个标签。从我的应用程序中的任何视图控制器,我希望能够更改此视图的文本(位于父视图控制器中)。
谢谢。
编辑:
成功!使用 KVO 跟踪我的 Singleton 对象的变化很有魅力,而且是一个非常简单的解决方案。
我认为您尝试做的事情违反了 MVC 模式的关注点分离:唯一应该与视图交互的是它的控制器。在您的情况下,您可能应该创建一个由视图控制器监视的模型(可能通过键值观察),然后控制器可以将必要的更改传播到您的视图。
如果您知道(请阅读:您真的知道现在和永远!)在某个时间点最多会存在一个该视图的实例,您可以使用一个全局变量来存储它。或者在该视图上使用类属性 - 尽可能接近单例。
或者你可能只是修复你的设计,这在我记忆中的每一种情况下都被证明是更好的选择。:) 只需在您的类中添加一些前向和后向引用(并坚持 MVC 原则)。实施那些担心那些尴尬的解决方法所花费的时间要少得多,而且它迟早会得到回报。