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