Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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
IOS/Objective-C:是否从共享实例更改视图控制器中的属性?_Ios_Objective C_Storyboard - Fatal编程技术网

IOS/Objective-C:是否从共享实例更改视图控制器中的属性?

IOS/Objective-C:是否从共享实例更改视图控制器中的属性?,ios,objective-c,storyboard,Ios,Objective C,Storyboard,我的应用程序中的视图控制器通过共享实例访问的类访问web上的一些数据。此类执行各种服务器调用 根据检索到的内容,我想更改viewcontroller中的某些内容,它具有连接到标签的outlet属性。为了实现这一点,在共享实例类中,我在序列图像板中分配了与视图控制器关联的类,然后设置outlet属性。但是,以下内容并没有改变屏幕上的任何内容 //通过共享实例访问的文件中的代码 IDImportFacebookVC *vc= [[IDImportFacebookVC alloc] init]

我的应用程序中的视图控制器通过共享实例访问的类访问web上的一些数据。此类执行各种服务器调用

根据检索到的内容,我想更改viewcontroller中的某些内容,它具有连接到标签的outlet属性。为了实现这一点,在共享实例类中,我在序列图像板中分配了与视图控制器关联的类,然后设置outlet属性。但是,以下内容并没有改变屏幕上的任何内容

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

    IDImportFacebookVC *vc= [[IDImportFacebookVC alloc] init];
        if (_contactCount==0) {
            NSString *emptyMessage = @"No friends found";
            vc.emptyMessage.text = emptyMessage;
        }
还需要什么吗?此外,我认为这可能完全违反了MVC,因此如果您能提出更好的建议,我将不胜感激


提前感谢您的建议。

您正在创建一个新的视图控制器,而不是访问屏幕上显示的视图控制器。屏幕上的一个(如果它已经在屏幕上)已经有一个已初始化的实例。如果它还没有出现在屏幕上,操作系统将从情节提要中初始化一个,并且不会使用您刚刚初始化的那个。即使是这样,您初始化的一个也不会按预期执行,因为它没有框架,也没有在窗口或导航控制器中设置

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


如果您确信一旦显示屏幕,这些数据将可用,那么property方法就可以工作,您可以根据共享实例的属性设置UI元素。如果您不确定数据何时可用,则可能还需要通知

这是你的真实代码吗?您正在创建
IDImportFacebookVC
的新实例。这是您希望更改属性的同一个实例吗?它是同一个VC。原始实例位于故事板中。毫无疑问,它是松鼠式的,似乎违反了MVC,而且不起作用。我想我可以发出一个通知,但这听起来像是一个很大的开销。必须有一个简单的方法来实现这一点。在什么情况下,您有来自服务器的数据?最好在viewdidload中更新iboutlets。我不知道你在哪里更新。我使用了属性方法,在共享实例中设置它,然后在视图控制器的视图中获取它。删除上面的代码时。这就解决了问题。@user6631314不错。我很高兴能帮上忙。谢谢你的投票和接受的答案