从单例类中通知视图控制器类中的表视图的数据源

时间:2013-09-02 06:32:41

标签: ios objective-c uiviewcontroller singleton tcpclient

我偶然发现了一个问题,即我必须在单一TCPConnection类的视图控制器类中更新我的数据源。我在单例TCPConnection类中具有服务器的回调函数,但是当我接收数据时,我必须在视图控制器类中更新表视图的数据源。您是否可以提前为此方案提供解决方案。

2 个答案:

答案 0 :(得分:2)

我将使用NSNotificationCenter: 订阅服务(订阅者):

[[NSNotificationCenter defaultCenter] addObserver:<your_controller>
                                         selector:@selector(method)
                                             name:@"name_of_notification"
                                           object:<any_linear_object_u_want>];

现在发件人将发布NSNotificationCenter

[[NSNotificationCenter defaultCenter] postNotificationName:@"name_of_notification" object:<any_linear_object_u_want>];

在接收器选择器你可以调用

[self.your_table reloadData];

reloadData操作可能很重,如果您遇到任何性能问题,请尝试其他重新加载。

祝你好运

答案 1 :(得分:1)

代表团是你的朋友。您将需要声明委托协议(可以在TCPConnection.h中执行此操作),并将委托属性添加到类型为id<TCPConnectionDelegate>@property (nonatomic, weak) id<TCPConnectionDelegate> delegate;)的TCPConnection类中。

然后,您可以将viewController设置为TCPConnection实例的委托。

然后,在TCPConnection实现中,您需要在收到新数据时向您的代理发送消息(将该数据与消息一起传递)。