【问题标题】:Update label in another View Controller from the appDelegate从 appDelegate 更新另一个视图控制器中的标签
【发布时间】:2012-06-25 03:37:28
【问题描述】:

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

在 AppDelegate .h中

我正在为视图控制器创建一个 ivar,因此我可以像这样从委托访问视图控制器上的标签。

someViewController *myView;

在 AppDelegate.m 文件中

myView.theLabel.text = @"Whatever";

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

我还尝试将 myView 设为属性并将其合成。我已经尝试过applicationDidFinishLaunchingapplicationWillEnterForeground 中的代码,但是标签永远不会更新。最好的方法是什么?

【问题讨论】:

  • 您是在应用程序委托中实例化控制器,还是通过任何其他方式获取对此控制器实例的引用?
  • .h 中的 @Alladinian 如上所述,我创建了一个 ivar someViewController *myView 并以这种方式访问​​标签。 someViewController.h 标头已添加到 appDelegate.h 和 appDelegate.m 中,但不确定您的意思。感谢您的回复。
  • @Alladinian 对不起,我很抱歉,不,如果我在访问 someViewController *myView = [[someViewController alloc]initWithNibName:@"someViewController" 的标签上方做,我不会从 appdelegate 实例化视图控制器呸呸呸呸?
  • 要在控制器中设置标签,您必须在分配/初始化/呈现它之后获取它的引用。您的视图控制器在哪里以及如何添加到窗口中?

标签: ios uiviewcontroller uilabel uiapplicationdelegate settext


【解决方案1】:

我想 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 设置为该第一个视图。

【讨论】:

    猜你喜欢
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多