gpt4 book ai didi

IOS/objective-C : Change property in View Controller from shared instance?

转载 作者:行者123 更新时间:2023-11-28 23:52:09 25 4
gpt4 key购买 nike

我的应用程序中的 View Controller 通过共享实例访问的类从 Web 访问一些数据。此类执行各种服务器调用。

根据检索到的内容,我想更改 viewcontroller 中的某些内容,该内容具有连接到标签的 outlet 属性。为此,在共享实例类中,我分配初始化与 Storyboard中的 View Controller 关联的类,然后设置 outlet 属性。但是,以下不会改变屏幕上的任何内容。

//通过共享实例访问的文件中的代码

    IDImportFacebookVC *vc= [[IDImportFacebookVC alloc] init];
if (_contactCount==0) {
NSString *emptyMessage = @"No friends found";
vc.emptyMessage.text = emptyMessage;
}

还需要什么吗?另外,我认为这可能完全违反了 MVC,所以如果有任何建议可以更好地做到这一点,我将不胜感激。

提前感谢您的任何建议。

最佳答案

您正在创建一个新的 View Controller ,但您没有访问屏幕上显示的 View Controller 。屏幕上的实例(如果它已经在屏幕上)已经有一个已初始化的实例。如果它尚未出现在屏幕上,操作系统将从 Storyboard 中初始化一个,并且不会使用您刚刚初始化的那个。即使如此,您初始化的那个也不会按照您的预期进行,因为它没有框架,也没有在窗口或导航 Controller 中设置。

在我看来,您的选择要么像您在评论中所说的那样发送通知,要么只是向您的共享实例添加一个属性,其中包含您要在屏幕上显示的数据。

如果您确定一旦屏幕显示此数据将可用,那么属性方式将起作用,您可以在其中根据共享实例的属性设置 UI 元素。如果您不确定数据何时可用,则可能也需要通知。

关于IOS/objective-C : Change property in View Controller from shared instance?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51886038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com