从另一个类更新UILabel

时间:2009-09-10 14:28:47

标签: iphone view controller

我是iPhone开发的新手,我仍然围绕着Objective-C,所以请耐心等待我:)

我正在尝试从属于主视图控制器的对象内部更改标签的文本。嗯。我觉得这听起来不对。

对于那些熟悉SpeakHere example on the iPhone Reference Library中的AQRecorder课程的人: -

我每次调用AQRecorder::MyInputBufferHandler时都会尝试更新标签(即填充输入缓冲区时)

我的第一种方法是修改AQRecorder类以包含我作为参数发送给修改后的构造函数的UILabel*。它奏效了,但感觉非常错误。现在我想修改几个不同的UI组件,我希望有更好的方法。

我有一种感觉,我错过了一些基本的东西。那或者我将需要一些重构。

2 个答案:

答案 0 :(得分:2)

除了通知(如Kristopher所建议的),如果你有可能有多个观察者的“全局”通知,这非常方便,我想到的经典方法是委托。

在您的情况下,处理事件的类(AQRecorder?)可以定义委托协议并具有委托属性,而拥有UILabel(您的主视图控制器?)的类可以实现此协议并更新协议实现中的标签(或做任何其他需要完成的事情)。

答案 1 :(得分:1)

使用NSNotificationCenter。它提供了分离的通知,因此记录器类不必了解UI的任何信息。