从appDelegate更新另一个View Controller中的标签

时间:2012-06-22 19:34:48

标签: ios uiviewcontroller uilabel uiapplicationdelegate settext

我想从appDelegate更新我的一个ViewControllers中的标签。视图控制器中的标签全部在IB中链接,并设置了属性。

在AppDelegate .h

我正在为视图控制器创建一个ivar,这样我就可以从代理中访问视图控制器上的标签了。

someViewController *myView;

并在AppDelegate.m文件中

myView.theLabel.text = @"Whatever";

我也试过myView.theLabel setText: @"whatever";

我也试过让myView成为一个属性并合成它。我已经尝试了applicationDidFinishLaunchingapplicationWillEnterForeground中的代码,但标签永远不会更新。这是最好的方法吗?

1 个答案:

答案 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设置为第一个视图。