【问题标题】:UILabel won't update the first timeUILabel 不会第一次更新
【发布时间】:2010-12-19 19:28:39
【问题描述】:


我有一个仅包含 o 按钮和一个 uilabel 的模态视图。
按钮关闭模态 v:

- (IBAction) close {
    [self dismissModalViewControllerAnimated:YES];
}


现在,我创建了这个视图:

nw = [[NewsViewController alloc] initWithNibName:@"NewsViewController" bundle:nil];
nw.modalInPopover = YES;
nw.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

[nw setValues:@"asdasd"];

[self presentModalViewController:nw animated:YES];

一切正常。

它加载正确,但 uilabel 值没有显示正确的文本标签。

这怎么可能?
第二次点击,值设置正确...

这是 setValues 函数:

- (void) setValues:(NSString*)val {
    [firstLabel setText:val];
}

调试中,第一次显示 UILabel 0x0...这是个问题,但第二次正确创建并设置了值。

有什么解决办法吗?

阿尔贝托。

【问题讨论】:

    标签: objective-c text uilabel


    【解决方案1】:

    可能您在viewDidLoad 中设置标签文本,直到视图完成自身加载。

    尝试输入viewDidAppearviewWillAppear

    【讨论】:

      【解决方案2】:

      在您第一次调用 setValues 时,NewsViewController 可能尚未加载其视图。要确认,请在[ns setValues:@"asdasd"]; 之前和NewsViewController-[viewDidLoad] 方法中设置断点。

      要解决此问题,您可以为NewsViewController 中的文本添加一个实例变量。然后在-[setValues:] 中设置实例变量,并在该实例变量的-[viewDidLoad] 方法中设置标签的文本。

      【讨论】:

      • 是的,我添加了一个实例变量,现在一切正常!谢谢。
      【解决方案3】:

      你也可以在主线程上设置文本

       dispatch_async(dispatch_get_main_queue(), ^{
             firstLabel.text = currentEventsString;
       });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-17
        • 2020-11-08
        • 2018-02-04
        • 1970-01-01
        • 1970-01-01
        • 2015-04-02
        • 1970-01-01
        相关资源
        最近更新 更多