我一直在尝试awakeFromNib访问awakeFromNib中的视图?
[imageView setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:1.0]];
设置一个UIImageView的背景颜色(见下文),当没有工作,我意识到,它可能是因为视图尚未加载,我应该搬到颜色变化viewDidLoad。
我可以证实我有这个权利吗?
加里
EDIT_002:
我刚开始一个新的项目,从一个干净的开始检查。我设置的视图与我一直所做的一样。结果是在awakeFromNib中的控件确实设置为(null)。以下是我有:
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];
}
OUTPUT:
awakeFromNib ...
myLabel: (null)
myView : (null)
viewDidLoad ...
myLabel: UILabel
myLabel: UIImageView
我很想知道,如果这应该工作,从它的外观的文档像它应该,但由于我平时做一些事情,我不能完全不一样的理解为什么它不在这种情况下。
谢谢Zoul,这很有趣。我想我只是使用viewDidLoad更好,因为强制视图首先加载调用。我也读过使用awakeFromNib可能不是iPhone上的好主意,但似乎对此有不同看法。再次感谢... – fuzzygoat 2010-04-28 19:06:19
如果您无权访问视图,请执行awaSeFromNib中的performSelector:withObject:delay调用。黑客,但有效。 – phatmann 2013-04-02 22:39:28
第一次偶然发现了这个问题和答案 - 如果我早点发现它,它会为我节省很多麻烦!这个问题在2013年仍然存在,我相信这种行为与文档相矛盾 - 请参见:http://stackoverflow.com/questions/17400547/awakefromnib-outlets-and-storyboards-is-the-documentation-wrong – 2013-07-01 10:44:58