我想从appDelegate更新我的一个ViewControllers中的标签。视图控制器中的标签全部在IB中链接,并设置了属性。
在AppDelegate .h
中我正在为视图控制器创建一个ivar,这样我就可以从代理中访问视图控制器上的标签了。
someViewController *myView;
并在AppDelegate.m文件中
myView.theLabel.text = @"Whatever";
我也试过myView.theLabel setText: @"whatever";
我也试过让myView成为一个属性并合成它。我已经尝试了applicationDidFinishLaunching
和applicationWillEnterForeground
中的代码,但标签永远不会更新。这是最好的方法吗?
答案 0 :(得分:3)
我认为还没有创建myView,所以你有一个空引用。
试试这个来测试这个理论:
someViewController *myView;
if(myView)
NSLog(@"Object has been created");
else
NSLog(@"You have a null reference - The Object hasn't been created yet");
如果是这种情况,请将行更改为此行以创建它:
someViewController *myView = [[someViewController alloc] initWithNibName:@"SomeViewController" bundle:nil];
myView.theLabel.text = @"Something";
self.window.rootViewController = myView;
是的,您在appDelegate中创建了第一个视图,然后将rootViewController设置为第一个视图。