Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Objective C(iOS)从另一个类更改ViewController中的IBUIObject_Ios_Objective C_Iphone - Fatal编程技术网

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

使用Objective C(iOS)从另一个类更改ViewController中的IBUIObject,ios,objective-c,iphone,Ios,Objective C,Iphone,我是iOS开发的初学者,无法让这部分正常工作。目标很简单:我有一个名为TCPComm的类,它连接到服务器并定期发送数据。在我的故事板中,我有一个包含一些按钮和文本字段的视图。其思想是根据从服务器(另一个类)接收到的数据更改IBOutletui按钮和UITextField的状态 我尝试过以不同的方式使用属性,但没有一种有效 请提供有关最佳方法的帮助?实现此目的的最佳方法是使用学员 在TCPComm头文件中声明协议 @protocol tcpCommDelegate <NSObject>

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

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


请提供有关最佳方法的帮助?

实现此目的的最佳方法是使用学员

在TCPComm头文件中声明协议

@protocol tcpCommDelegate <NSObject>
-(void)callBackMethod;
@end
现在,在viewcontroller类中,确保导入了TCPComm类,并且它接受如下所示的tcpCommDelegate协议

if(delegate && [delegate respondsToSelector:@selector(callBackMethod)])
        [delegate performSelector:@selector(callBackMethod)];
@interface YourViewController : UIViewController <tcpCommDelegate>

也就是说,现在您可以在viewcontroller中实现callBackMethod主体,并更改所需UIObject的属性。每当TCPComm类获取新数据时,如果您在正确的时间(即数据获取完成时)调用了第三个代码段,则将调用此方法。是否可以显示代码?IBOutlet指的是Xcode Interface Builder中引用的特殊ivar或属性。您需要先设置IBOutlet,然后才能对其进行更新。看见您还需要设置iAction,让用户触发状态更改。谢谢,Harsha会尝试!与使用通知相比,使用此方法是否有任何优势?我已经成功地使用通知实现了类似的功能,它基本上是在收到通知时调用一个定义的方法…工作得很好,但不确定哪种方法最合适。使用通知没有错,因为它更易于编码,而且多个对象可以订阅该通知,这是相对于代表的优势。另一方面,委派是一种很好的编程实践,学习使用委派可以使编码更加流畅。如果您对通知感到满意,那么您可以使用它们,您需要根据自己的需求决定使用哪种通知。
@interface YourViewController : UIViewController <tcpCommDelegate>
TCPComm *tcpcomm = [[TCPComm alloc]init];
tcpcomm.delegate = self;