我在访问IBOutlet时遇到问题。
我有一个NIB,里面有一个表格视图,一个工具栏和一个UILabel(封装在一个视图中)。
控制器(即文件的所有者)定义为:
@interface ChoixPeriodeController : UIViewController <UITableViewDelegate> {
IBOutlet UILabel* __periodeInitialeLabel;
}
@property(nonatomic, retain) UILabel* periodeInitialeLabel;
- (void) setSelectedPeriode:(Tache_TypePeriode)typePeriode;
与
@synthetize periodeInitialeLabel = __periodeInitialeLabel;
在.m文件中,父窗口调用此函数以初始化Label:
- (void) setSelectedPeriode:(Tache_TypePeriode)typePeriode {
NSMutableString* tmpString = [NSMutableString string];
[tmpString appendFormat:some text format....];
self.periodeInitialeLabel.text = tmpString;
}
在此函数中,我可以看到self.periodeInitialeLabel为零。我不明白为什么。一切都已连接到IB ...您看到问题所在了吗?
最佳答案
这里的问题是操作的顺序。如果文本标签仍为nil,则可能尚未设置。相反,您可以在UIViewController方法viewDidLoad
中调用此方法来处理此类操作,这些操作必须执行“额外配置”,而这在Interface Builder中是无法完成的。
还有awakeFromNib
。它们非常相似,不同之处在于当未打包NIB文件时awakeFromNib被称为ONCE。 viewDidLoad
可以被多次调用-例如,如果内存不足(通常在iOS4上发生),您的视图将通过viewDidUnload
清除。
关于iphone - iPhone-无法访问IBOutlet(无值),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4699644/