当应用加载时,我遇到了UILabel没有分配Text的问题。有两种方法 updateDateLabel 和 updateTitleLabel (将分配两个不同的标签),当应用加载应用时,第一次加载应用时会再次调用根据用户要求。
- (void)updateDateLabel {
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
outputFormatter.dateFormat = @"HH:mm MM-dd-YY";
_dateLabel.text = [NSString stringWithFormat:@"as of: %@", [outputFormatter stringFromDate:_refreshDateTime]];
[_dateLabel setNeedsDisplay];
}
-(void)updateTitleLabel {
_selectedProfileData = [_balanceData objectAtIndex:_selectedProfile];
if ([NSNull null] != [_selectedProfileData objectForKey:@"advProfileName"]) {
NSString *name = [_selectedProfileData objectForKey:@"advProfileName"];
_titleLabel.text = [NSString stringWithFormat:@"%@'s Balances", name];
[_titleLabel setNeedsDisplay];
} else {
_titleLabel.text = @"QuickView Balances";
[_titleLabel setNeedsDisplay];
}
}
问题是,当应用首次加载时,它应显示 QuickView余额:,但最新发生的是它显示(nulls)的余额: (空)即可。
我的猜测是第一次调用这些方法时没有创建标签,任何人都可以帮我解决这个问题。谢谢
答案 0 :(得分:0)
您的[_selectedProfileData objectForKey:@"advProfileName"]
为空。检查
NSLog(@"%@", [_selectedProfileData objectForKey:@"advProfileName"]);
您会看到(null)
。如果您的值为null,则进行测试,只需执行
if([_selectedProfileData objectForKey:@"advProfileName"] != nil)
或只是
if([_selectedProfileData objectForKey:@"advProfileName"])
您无需致电setNeedsDisplay
,如果您在屏幕上看到某些内容,则会创建标签。