2015-09-12 52 views
-2

我尝试在一个类中设置导入联系人。然而,如果没有,我想在一个完全独立的视图控制器中设置一个标签插座来表示“没有找到”。在另一个VC中的一个类中显示变量

基本上,我想在一个类发送消息到另一个,但由于某种原因,我一片空白。

以下不不会引发错误,但也不会设置标签,这样是行不通的。

VC.h:

//wired to label in VC in storyboard: 

@property (weak, nonatomic) IBOutlet UILabel *noneFound; 

@end 

request.m

//class that does request 

#import "VC.h" 

NSString *result = @"none found"; 
VC* vc; 
vc.noneFound.text = result; 

必须有这样做的明显的方式。将不胜感激任何建议。

+0

你* VC是没有被启动? – Ares

+0

在alloc init? – user1904273

+0

是的,或从主板加载等 – Ares

回答

-1

虽然无可厚非设置从VC外的视图控制器的标签,但我不建议这样做。 MVC体系结构支配这一点。

UI组件不应该暴露在头文件,除非和直到它是业务逻辑的需求。它像其他人一样正在代表视图控制器作出决定。我会建议将IBOutlet放入VC的.m文件中。现在

,以请求类与VC连接,使用任何现有的设计patters的 - 块,委托,通知,目标 - 动作等Refer to Apple Documentation

一旦链接存在,通过对从请求类的值到VC然后在VC内确保UI始终在MAIN线程上更新。

希望这有助于!

+0

你可以更具体的现在,要链接请求类与你的VC,使用任何现有的设计模式 - 块,代表,通知,目标行动等 – user1904273

+0

那么,现在有更广泛的讨论。我已经用Apple文档参考更新了我的答案。基本上,您需要了解将VC与其他应用程序模块(如网络,实用程序,其他VC等)连接的正确方法。 – Abhinav

+0

我熟悉各种模式。我希望有一个简单的方法可以做到这一点。我可以做的是将该方法移到VC后面的类中,并让它访问不同文件中的数据。 – user1904273

-3

您可以随时使用NSUserDefaults的

为了节省:

NSString *valueToSave = @"someValue"; 
[[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@"preferenceName"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

加载:

NSString *savedValue = [[NSUserDefaults standardUserDefaults] 
    stringForKey:@"preferenceName"]; 
+1

非常不好的风格,哦 – gaussblurinc

+0

尽管它尽力而为 – ooenomel2003

0

使用强效而不是弱物业

@property (strong, nonatomic) IBOutlet UILabel *noneFound; 
相关问题