IOS/Objective-C:从共享实例更改 View Controller 中的 属性?
IOS/Objective-C: Change property in View Controller from shared instance?
我的应用程序中的视图控制器通过共享实例访问的 class 从网络访问一些数据。此 class 执行各种服务器调用。
根据检索到的内容,我想更改 viewcontroller 中的某些内容,它有一个连接到标签的插座 属性。为此,在共享实例 class 中,我分配初始化与故事板中的视图控制器关联的 class,然后设置出口 属性。但是,以下不会改变屏幕上的任何内容。
//通过共享实例访问的文件中的代码
IDImportFacebookVC *vc= [[IDImportFacebookVC alloc] init];
if (_contactCount==0) {
NSString *emptyMessage = @"No friends found";
vc.emptyMessage.text = emptyMessage;
}
还有什么需要的吗?另外,我认为这可能完全违反了 MVC,所以如果有任何关于更好的方法的建议,我将不胜感激。
提前感谢您的任何建议。
您正在创建一个新的视图控制器,您没有访问正在显示在屏幕上的视图控制器。在屏幕上的那个(如果它已经在屏幕上)已经有一个已经初始化的实例。如果它还没有出现在屏幕上,OS 将从情节提要中初始化一个,并且不会使用您刚刚初始化的那个。即使如此,您初始化的那个也不会像您预期的那样执行,因为它没有框架,也没有在 window 或导航控制器中设置。
在我看来,您的选择是按照您在评论中所说的那样发送通知,或者只是将 属性 添加到包含您要在屏幕上显示的数据的共享实例。
如果您确定一旦屏幕显示此数据就可用,那么 属性 方法就可以工作,您可以根据 [=19= 设置 UI 元素] 的共享实例。如果您不确定数据何时可用,那么通知也可能是必要的。
我的应用程序中的视图控制器通过共享实例访问的 class 从网络访问一些数据。此 class 执行各种服务器调用。
根据检索到的内容,我想更改 viewcontroller 中的某些内容,它有一个连接到标签的插座 属性。为此,在共享实例 class 中,我分配初始化与故事板中的视图控制器关联的 class,然后设置出口 属性。但是,以下不会改变屏幕上的任何内容。
//通过共享实例访问的文件中的代码
IDImportFacebookVC *vc= [[IDImportFacebookVC alloc] init];
if (_contactCount==0) {
NSString *emptyMessage = @"No friends found";
vc.emptyMessage.text = emptyMessage;
}
还有什么需要的吗?另外,我认为这可能完全违反了 MVC,所以如果有任何关于更好的方法的建议,我将不胜感激。
提前感谢您的任何建议。
您正在创建一个新的视图控制器,您没有访问正在显示在屏幕上的视图控制器。在屏幕上的那个(如果它已经在屏幕上)已经有一个已经初始化的实例。如果它还没有出现在屏幕上,OS 将从情节提要中初始化一个,并且不会使用您刚刚初始化的那个。即使如此,您初始化的那个也不会像您预期的那样执行,因为它没有框架,也没有在 window 或导航控制器中设置。
在我看来,您的选择是按照您在评论中所说的那样发送通知,或者只是将 属性 添加到包含您要在屏幕上显示的数据的共享实例。
如果您确定一旦屏幕显示此数据就可用,那么 属性 方法就可以工作,您可以根据 [=19= 设置 UI 元素] 的共享实例。如果您不确定数据何时可用,那么通知也可能是必要的。