コードのみを使用して作成されたUIがあります。すべて(UIlabelsなど)は、ViewControllerのviewdidload内で初期化されます。
.h
@interface homeViewController : UIViewController {
//IBOutlet UILabel *lbl; // not using an outlet anyway...
UILabel *lbl;
}
@property(nonatomic,retain) UILabel *lbl;
@end
.m
@interface homeViewController ()
@end
@implementation homeViewController
@synthesize lbl;
-(void)updateLabel {
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
double temptemp2 = [ud doubleForKey:@"somekey"];
lbl.text = [NSString stringWithFormat:@"%f", temptemp2];
[ud synchronize];
}
次に、viewdidloadで[selfupdateLabel]を呼び出します。ラベルは更新されません。ただし、updateLabelメソッド内にある同じコードをビューに入れてロードした場合、コードは機能します。
UIlabelは[selfupdateLabel]の前に初期化されています(alloc init)。ビューの内側が読み込まれました。
Interface Builderを使用してラベルオブジェクトを初期化したくない場合、どのように適切に初期化する必要がありますか?同じViewController内の他のメソッドからアクセスできるようにしますか?