我想更改我的默认视图控制器中的标签的值从一个不同的类。看不到viewcontoller的属性
- 于是我开始一个简单的“单一视图应用的iOS项目(Xcode5)
- 这会自动生成一个视图控制器,我(我 明白是根视图控制器)
- 我现在添加标签在我看来,并将其连接到ViewController(通过IBOutlet中机制)
我在ViewController.h称之为出口“gameStateLabel”,所以它看起来像这样的文件
@property (weak, nonatomic) IBOutlet UILabel *gameStateLabel;
接下来,我有一个完全独立的类,它具有我的代码的逻辑,并基于逻辑中的条件我想更改UIlabel。
所以我尝试从我的其他类做到这一点:
得到这样的根视图控制器的实例:
UIViewController * uvc = [[[[UIApplication sharedApplication] delegate] window] rootViewController];
我想我现在有一个实例在uvc中的rootviewcontroller的应该能够进入并更改gameStateLabel。
但是:我无法做到这一点uvc.gameStateLabel根本不显示作为属性,即使它明确声明为一个属性,我也为它添加了@synthesize。
任何帮助将不胜感激 - 我一直在这个疯了。 (对于参考,我习惯于在Mac上做类似的事情,我将声明一个标签作为AppDelegate的属性,获取Appdelegate的实例并简单地引用label属性并更改其属性文字]
这里的视图控制器。需要注意的是gameStateLable是一个属性
#import "ViewController.h"
@interface ViewController()
@property (weak, nonatomic) IBOutlet UILabel *gameStateLabel;
@end
@implementation ViewController
@synthesize gameStateLabel;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
这里是我的类CLS1(从NSObject的继承)
#import "cls1.h"
#import "ViewController.h"
@implementation cls1
-(void) dummy{
UIViewController * uvc = [[[[UIApplication sharedApplication] delegate] window] rootViewController];
// uvc does NOT show gameStateLabel in intellisense, i.e. uvc.gameStateLabel does NOT work
}
尝试委托功能。 –
您是否试图打印由[[[[[UIApplication sharedApplication]委托]窗口] rootViewController]获得的rootViewController对象?什么是日志打印? –