【问题标题】:Updating a UILabel from another view using NSNotificationCenter使用 NSNotificationCenter 从另一个视图更新 UILabel
【发布时间】:2012-09-02 00:19:31
【问题描述】:

我正在使用使用 NSNotification 中心调用的方法在另一个视图中更新 UILabel。

我发现它不起作用,标签保持不变,直到稍后重新加载视图(不使用 nsnotification 中心调用的方法)。

标签设置为非原子,保留,我正在使用 self 将所有内容绑定到该属性。

显然所有尝试更新标签的代码(方法)都位于相应的 viewController 中。该方法被调用(我可以通过 NSLog 看到),它所做的只是 self.label2.text = @"label 2 updated";

我可以使用计时器来更新标签的文本值,所以我认为标签没有问题,而是我对线程和/或加载的内容的理解在给定的时间。

你认为是什么问题?

PS:我会选择一个答案,即使它对我没有太大帮助,所以请发表你最疯狂的猜测!

【问题讨论】:

  • “我会选择一个答案,即使它对我没有多大帮助”:请不要那样做。
  • 哈哈,我自然不会选择一点用处都没有的

标签: objective-c ios uilabel nsnotificationcenter


【解决方案1】:

在设置文字时,首先确保你的标签不是nil

如果不是nil,请在设置文本后尝试在标签上调用setNeedsLayout(这不是必需的)。另外,验证您是否在主线程上:

[NSThread isMainThread]

如果这没有帮助,请使用 UILabel 的子类,覆盖 setText 并在其上放置断点以查看发生了什么。

【讨论】:

  • 感谢您的回答!我刚刚检查过,我在主线程上,标签不是空的。我只是在实例/属性上调用 setNeedsLayout,比如 [self.label setNeedsLayout];我什么时候尝试更新?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-09
  • 1970-01-01
相关资源
最近更新 更多