我有以下课程:
@interface DiscountDetailViewController : UIViewController {
UILabel * titleLabel;
UILabel * offerLabel;
}
@property (nonatomic, retain) IBOutlet UILabel * titleLabel;
@property (nonatomic, retain) IBOutlet UILabel * offerLabel;
@end
我尝试在上一个视图中执行以下操作:
discount = [[DiscountDetailViewController alloc] initWithNibName:@"DiscountDetailViewController" bundle:nil];
discount.titleLabel.text = temp.vendor;
discount.offerLabel.text = temp.description;
[self.navigationController pushViewController:discount animated:YES];
问题是,discount.titleLabel.text在打印时始终为null ...我认为这是因为我使用界面构建器定义了titleLabel ..所以有没有办法解决这个问题?
我也和IB联系过......
答案 0 :(得分:1)
我不相信iboutlet会在第一次在屏幕上显示之前连接起来。
您可以尝试在显示后设置标签,或添加另一个属性来存储标签文本,然后在DiscountDetailViewController的viewDidLoad中根据此新属性设置iboutlet标签。
答案 1 :(得分:0)
如果你的网点连接正确,那只是因为你的viewIsLoaded
-(void)viewDidLoad
NSString
之前你的titleLabel不可用,我建议你使用discount = [[DiscountDetailViewController alloc] initWithNibName:@"DiscountDetailViewController" bundle:nil];
//Force view to load, do not really recommend (though for some reason I am showing you how)
[discount view];
discount.titleLabel.text = temp.vendor;
discount.offerLabel.text = temp.description;
[self.navigationController pushViewController:discount animated:YES];
属性来设置标题加载视图后加上标签并在更改时更新它(覆盖设置器),或者如果您知道您的视图将要显示尝试首先调用视图。
{{1}}