使用Objective C(iOS)从另一个类更改ViewController中的IBOutlet UIObject

时间:2015-11-01 18:35:24

标签: ios objective-c iphone

我是iOS开发的初学者,无法让这部分工作。目标很简单:我有一个名为TCPComm的类,它连接到服务器并定期发送数据。在我的故事板中,我有一个包含一些按钮和文本字段的视图。我们的想法是根据从服务器(从另一个类)收到的数据来更改IBOutlet UIButtonsUITextField的状态。

我尝试过以不同方式使用属性,但没有一种方法有效。

有关最佳方法的任何帮助吗?

1 个答案:

答案 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类提取了新数据,就会调用此方法