题
我是iPhone开发的新手,我仍然围绕着Objective-C,所以请耐心等待我:)
我正在尝试从属于主视图控制器的对象内部更改标签的文本。嗯。我觉得这听起来不对。
对于那些熟悉 AQRecorder 类的人“> iPhone参考资料库中的SpeakHere示例: -
我每次调用 AQRecorder :: MyInputBufferHandler
时都会尝试更新标签(即填充输入缓冲区时)
我的第一个方法是修改 AQRecorder
类,以包含我作为参数发送给修改后的构造函数的 UILabel *
。它奏效了,但感觉非常错误。现在我想修改几个不同的UI组件,我希望有更好的方法。
我有一种感觉,我错过了一些基本的东西。那或者我将需要一些重构。
解决方案
使用 <代码> NSNotificationCenter 代码> 。它提供了分离的通知,因此记录器类不必了解UI的任何信息。
其他提示
除了通知(如Kristopher所建议的),如果你有“全局”的话,这非常方便。可能有多个观察者的通知,想到的经典方法是委托。
在您的情况下,处理事件的类( AQRecorder
?)可以定义委托协议并具有委托属性,而拥有 UILabel
的类(您的主视图控制器?)可以实现这个协议并更新协议实现中的标签(或做任何其他需要做的事情)。
不隶属于 StackOverflow