在navigationcontroller问题中添加视图控制器

时间:2011-04-19 19:25:08

标签: iphone objective-c

我有以下课程:

@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联系过......

2 个答案:

答案 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}}