iPhone - 无法访问IBOutlet(零值)

Oli*_*ver 3 iphone null interface-builder uilabel iboutlet

我在访问IBOutlet时遇到问题.

我有一个NIB,里面有一个tableview,一个工具栏和一个UILabel(封装在一个视图中).控制器(即文件的所有者)定义为:

@interface ChoixPeriodeController : UIViewController <UITableViewDelegate> { 
 IBOutlet UILabel* __periodeInitialeLabel;
}

@property(nonatomic, retain) UILabel* periodeInitialeLabel;

- (void) setSelectedPeriode:(Tache_TypePeriode)typePeriode;
Run Code Online (Sandbox Code Playgroud)

@synthetize periodeInitialeLabel = __periodeInitialeLabel;

在.m文件中,父窗口调用此函数来初始化Label:

- (void) setSelectedPeriode:(Tache_TypePeriode)typePeriode {
 NSMutableString* tmpString = [NSMutableString string];

 [tmpString appendFormat:some text format....];

 self.periodeInitialeLabel.text = tmpString;
}
Run Code Online (Sandbox Code Playgroud)

进入这个函数,我可以看到self.periodeInitialeLabel为零.我不明白为什么.一切都与IB相关联......你知道会出现什么问题吗?

mak*_*dad 5

这里的问题是操作的顺序.如果文本标签仍为零,则可能尚未设置.相反,您可以在UIViewController方法内部调用此方法viewDidLoad来处理此类操作,这些操作必须执行在Interface Builder中无法完成的"额外配置".

还有awakeFromNib.它们非常相似,只是在解压缩NIB文件时将awakeFromNib称为ONCE. viewDidLoad可以多次调用 - 例如,如果内存不足(通常在iOS4上发生),您的视图将被清除viewDidUnload.