这是关于为什么我无法在awakeFromNib中设置UIControl的另一个问题的后续内容。答案是,正如您在下面看到的那样,awakeFromNib
中的控件是零,尽管在我们到达viewDidLoad
时它们已初始化为正确的对象。我设置的视图与以往一样,如果我在这里进行不同的操作,可以使用当前版本的Image Builder设计和保存xib(nib)。
CODE:
@interface iPhone_TEST_AwakeFromNibViewController : UIViewController {
UILabel *myLabel;
UIImageView *myView;
}
@property(nonatomic, retain)IBOutlet UILabel *myLabel;
@property(nonatomic, retain)IBOutlet UIImageView *myView;
@end
@synthesize myLabel;
@synthesize myView;
-(void)awakeFromNib {
NSLog(@"awakeFromNib ...");
NSLog(@"myLabel: %@", [myLabel class]);
NSLog(@"myView : %@", [myView class]);
//[myLabel setText:@"AWAKE"];
[super awakeFromNib];
}
-(void)viewDidLoad {
NSLog(@"viewDidLoad ...");
NSLog(@"myLabel: %@", [myLabel class]);
NSLog(@"myView : %@", [myView class]);
//[myLabel setText:@"VIEW"];
[super viewDidLoad];
}
输出:
awakeFromNib ...
myLabel: (null)
myView : (null)
viewDidLoad ...
myLabel: UILabel
myLabel: UIImageView
非常感谢...
加里
答案 0 :(得分:1)
iboutlet连接到控件,它是view
和view
延迟加载
所以你可以先访问它,如下所示:
func awakeFromNib() {
super.awakeFromNib()
let _ = self.view
println("\(self.myLabel)")
}
答案 1 :(得分:0)
例如,如果ViewController的View是从另一个NIB加载的,则会发生这种情况。这些连接只有在实际加载NIB时才会被初始化和修复,因为它们实际上并不存在实际实例化并且首先唤醒控制器的NIB。
答案 2 :(得分:0)
您可以获得有关here
的更多信息