我是iOS开发的初学者,无法让这部分工作。目标很简单:我有一个名为TCPComm
的类,它连接到服务器并定期发送数据。在我的故事板中,我有一个包含一些按钮和文本字段的视图。我们的想法是根据从服务器(从另一个类)收到的数据来更改IBOutlet
UIButtons
和UITextField
的状态。
我尝试过以不同方式使用属性,但没有一种方法有效。
有关最佳方法的任何帮助吗?
答案 0 :(得分:0)
实现这一目标的最佳方法是使用代表。
在TCPComm头文件中声明协议
@protocol tcpCommDelegate <NSObject>
-(void)callBackMethod;
@end
在界面中声明一个公共属性
@property (nonatomic, weak) id<tcpCommDelegate> delegate;
现在,只要在TCPComm类中收到一些数据(如下面的
),就调用协议中声明的方法if(delegate && [delegate respondsToSelector:@selector(callBackMethod)])
[delegate performSelector:@selector(callBackMethod)];
现在,在你的viewcontroller类中确保你导入了TCPComm类并且它接受了如下所示的tcpCommDelegate协议
@interface YourViewController : UIViewController <tcpCommDelegate>
在ViewController的viewDidLoad方法中创建TCPComm类的实例并将其委托属性分配给self
TCPComm *tcpcomm = [[TCPComm alloc]init];
tcpcomm.delegate = self;
那就是,现在你可以在viewcontroller中实现callBackMethod体并更改你想要的任何UIObject的属性。如果您在正确的时间调用了第3个代码片段,即数据提取完成时,只要TCPComm类提取了新数据,就会调用此方法