我使用代码来生成UI而不是IB。我尝试在表视图的初始化中将backgroundView
设置为nil
,并在viewDidLoad
中直接更改backgroundColor
,但都无法更改表视图的背景颜色。如何以正确的方式更改UITableView的背景颜色?
最后,我在viewWillAppear
中设置了backgroundColor
,它工作正常!
那么,表视图上的viewDidLoad
和viewWillAppear
之间发生了什么?为什么它的背景颜色在这个短语中被改变了?
这里是我的代码:
// in tableview's init, doesn't work
- (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style {
self = [super initWithFrame:frame style:style];
if (self) {
self.backgroundView = nil;
self.backgroundColor = [UIColor grayColor];
}
return self;
}
// loadView
- (void)loadView {
_personalView = [NSBPersonalView new];
self.tableView = _personalView;
self.edgesForExtendedLayout = UIRectEdgeNone;
}
// in view controller's viewDidLoad, doesn't work either
- (void)viewDidLoad {
self.tableView.backgroundColor = [UIColor grayColor];
}
// but in view controller's viewWillAppear, it works
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.tableView.backgroundColor = [UIColor grayColor];
}
http://stackoverflow.com/questions/1579550/uiviewcontroller-viewdidload-vs-viewwillappear-what-is-the-proper-division-of这可能有助于清除您的困惑.....! –
我只是想知道为什么tableView的属性会在'viewDidLoad'后面改变,即使在'init'中设置了。 – vulgur
你能告诉我代码,你到底写了什么? –