我使用代碼來生成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
你能告訴我代碼,你到底寫了什麼? –