我的应用程序中的视图控制器通过通过共享实例访问的类从Web访问某些数据。此类执行各种服务器调用。
基于检索到的内容,我想在viewcontroller中更改一些内容,该内容具有连接到标签的插座属性。为此,在共享实例类中,我在故事板上分配了与视图控制器关联的init类,然后设置了outlet属性。但是,以下内容并未更改屏幕上的任何内容。
//通过共享实例访问的文件中的代码
IDImportFacebookVC *vc= [[IDImportFacebookVC alloc] init];
if (_contactCount==0) {
NSString *emptyMessage = @"No friends found";
vc.emptyMessage.text = emptyMessage;
}
还有其他需要吗?另外,我认为这可能完全违反了MVC,因此,希望获得有关更好方法的任何建议。
预先感谢您的任何建议。
答案 0 :(得分:1)
您正在创建一个新的视图控制器,您没有访问屏幕上显示的控制器。屏幕上的一个(如果已经在屏幕上)已经具有已初始化的实例。如果尚未显示在屏幕上,则操作系统将从情节提要中初始化一个,而不会使用您刚初始化的一个。即使按原样,您初始化的对象也不会像预期的那样工作,因为它没有框架,也没有在窗口或导航控制器中设置。
我认为,您的选择是按照注释中的说明发送通知,或者只是向共享实例添加一个属性,该属性包含要在屏幕上显示的数据。
如果您确定一旦显示了该屏幕,此数据将可用,那么该属性方法将起作用,您可以在此仅基于共享实例的属性来设置UI元素。如果您不确定何时可以获取数据,则可能还需要进行通知。