UILabel在Segue之后没有更新

时间:2015-05-12 02:13:47

标签: ios objective-c xcode uilabel

我是一个UIViewController,在它的init方法中,应该指定2个标签的文本。但是,这不会发生,文本永远不会改变。所有的连接都是正确的,但它们没有显示任何东西,我无法弄清楚原因。

以下是应该更改此特定ViewController的UILabel的代码。

-(id)initWithCoder:(NSCoder *)aDecoder{
    if (self = [super initWithCoder:aDecoder]) {
        _nameLabel.text = @"NAME";
        _addressLabel.text = @"ADDRESS"; 
    }
    return self;
}

以下是“.h”文件:

@property (strong, nonatomic) Location *selectedLocation;

@property (weak, nonatomic) IBOutlet UILabel *nameLabel;

@property (weak, nonatomic) IBOutlet UILabel *addressLabel;

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

initWithCoder:中视图尚未加载,这意味着即使连接正确,您的网点仍然指向nil。

仅在第一次调用视图控制器的view时才构建视图并连接插座。

请考虑在viewDidLoadviewWillAppear:中执行此操作。

答案 1 :(得分:1)

我猜library(dplyr) dt1 %>% group_by(group, year) %>% summarise(amt = sum(amt)) %>% filter(sum(amt) > 100) 未被调用。 建议您在#Source: local data table [2 x 3] #Groups: group # # year group amt #1 2001 a 60 #2 2002 a 65

中设置所需的数据
initWithCoder:

如果未解决,请检查视图状态,例如帧,隐藏或alpha值。

viewDidLoad

<强>更新: 这是因为函数- (void)viewDidLoad { [super viewDidLoad]; self.nameLabel.text = @"NAME"; self.addressLabel.text = @"ADDRESS"; } 中的IBOutlet为- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; NSLog(@"[nameLabel] frame : %@, hidden : %d, alpha : %@", NSStringFromRect(self.nameLabel.frame), self.nameLabel.hidden, self.nameLabel.alpha); NSLog(@"[addressLabel] frame : %@, hidden : %d, alpha : %@", NSStringFromRect(self.addressLabel.frame), self.addressLabel.hidden, self.addressLabel.alpha); }

XIB-instantiated Object's IBOutlet is nil

Why isn't initWithCoder initializing items correctly?

答案 2 :(得分:0)

这更像是一种风格选择,但您可能想要综合您的属性。您可以使用init方法上方的@synthesize myProperty;来实现此目的,现在您可以设置对象的属性,如下所示:myLabel.text = @"Hello";

根据您调用此视图控制器的方式,可能无法始终调用init。尝试将文本设置方法放在viewDidLoad甚至viewWillAppear中(您必须实现最后一个)