UILabel拒绝更新

时间:2013-10-10 11:08:59

标签: iphone ios objective-c automatic-ref-counting

我遇到了一个奇怪的问题。

我正在尝试在返回视图控制器后更新UILabel。

当我返回视图控制器时,我做了一些工作,然后更新我的视图,但我的UILabel都没有更新。

我100%确定我正在使用主线程(甚至尝试使用dispatch_async强制它并获取主线程),但它仍然无效。

我也确定UILabel上的text属性正在更新,正如在lldb中使用print object命令所确认的那样,但它没有在屏幕上更新...

这是更改UILabel内容的行,非常香草:

[(UILabel *)[self.view viewWithTag:1] setText:_accountInfo[@"name"]];

这是该行执行后“po”的输出:

(lldb) po [self.view viewWithTag:1]
<UILabel: 0x165e87f0; frame = (20 12; 143 21); text = 'Testing Again'; clipsToBounds = YES; opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; tag = 1; layer = <CALayer: 0x165de750>>

顺便说一句,我正在使用ARC并部署到iOS 7。

如果您需要更多代码或任何信息,请说明。我开始对这个问题感到绝望了!

提前致谢。

编辑:忘记在首次设置视图时添加相同的代码。

4 个答案:

答案 0 :(得分:1)

尝试使用这样......

UILabel *label = (UILabel *)[self.view viewWithTag:1];
label.text = _accountInfo[@"name"];

答案 1 :(得分:1)

这样做:

[((UILabel *)[self.view viewWithTag:1]) setText:_accountInfo[@"name"]];

答案 2 :(得分:0)

您需要为ios7设置动态字体 试试这个...

UIFontDescriptor *userFont = [UIFontDescriptor preferredFontDescriptorWithTextStyle:UIFontTextStyleBody];
float userFontSize = [userFont pointSize];
UIFont *font = [UIFont boldSystemFontOfSize:userFontSize];//[UIFont fontWithName:@"Helvetica" size:userFontSize];
[noteLabel setFont:font];

答案 3 :(得分:0)

完成以下步骤:

1)如果您已添加代码中的标签。检查您是否正在分配内存并初始化标签。

2)如果你有拖拽和如果您提供了正确的标签并完成了必要的插座连接,则在Interface Builder中删除标签。

3)检查标签和其他视图的标签是否没有冲突。

4)使用cmd + shift + k清除所有目标。

5)再次建造

OR

使用此方法检查是否为标签:

if ([[self.view viewWithTag:1] isMemberOfClass:[UILabel class]]) {
    //Its a label
    UILabel *label = (UILabel *)[self.view viewWithTag:1];
    label.text=@"Hello World";
}
else {
    //Its not a label
}

可能你应该尝试第二种选择。你将至少知道发生了什么......