从appDelegate更改UILabel

时间:2014-06-01 18:39:04

标签: xcode uiviewcontroller appdelegate

我想从Xcode中的appDelegate做一些事情。其中一件事就是改变UILabel。

ViewController *viewController = [[UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil]        instantiateViewControllerWithIdentifier:@"id"];


viewController.label.text = @"heeej";

我被告知这样做会有所帮助。不行。标签不会改变。有谁知道问题是什么?

1 个答案:

答案 0 :(得分:0)

有几个问题:

  1. 除了将窗口加载到初始视图控制器(如果需要)之外,不要在AppDelegate中执行任何操作。
  2. 您正在第一行中实例化一个新的视图控制器。我假设您已经有一个视图控制器,并且您想要更改该视图控制器中的标签。您需要对该视图控制器的引用并使用此引用向其发送消息。
  3. 标签不应是视图控制器的属性。您应该尝试遵循设计模式Model-View-Controller或模式Model-View-ViewModel。如果你不知道,请问你喜欢的搜索引擎是什么。
  4. id作为Objective-C中任何内容的标识符是一个坏主意,因为它被用作对象类型。
  5. 修改:您不需要在视图控制器中更改属性的引用。使用通知更新标签。系统会为此名称发送名称为UIApplicationWillEnterForgroundNotification' (see [here][1]). Add the view controller as an observer to the [NSNotificationCenter defaultCenter]`的通知,并对通知作出反应。如果您不知道我在说什么,请阅读Apple文档。