問題是,UITableViewController的view屬性和tableView屬性是一樣的。我有同樣的問題,想把一些固定的內容放在桌子上面。我不想改變基類,因爲它提供了許多我不想丟失或中斷的強大功能。
修復其實很簡單。訣竅是創建自定義設置並獲取self.tableView屬性。然後,在loadView中,用新的UIView替換視圖並將tableView添加到它。然後你可以自由地在tableView中添加子視圖。下面是它是如何做:
在標題:
@interface CustomTableViewController : UITableViewController
{
UITableView *tableView;
}
在.M:
- (UITableView*)tableView
{
return tableView;
}
- (void)setTableView:(UITableView *)newTableView
{
if (newTableView != tableView)
{
[tableView release];
tableView = [newTableView retain];
}
}
- (void)loadView {
[super loadView];
//save current tableview, then replace view with a regular uiview
self.tableView = (UITableView*)self.view;
UIView *replacementView = [[UIView alloc] initWithFrame:self.tableView.frame];
self.view = replacementView;
[replacementView release];
[self.view addSubview:self.tableView];
//code below adds some custom stuff above the table
UIView *customHeader = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 20)];
customHeader.backgroundColor = [UIColor redColor];
[self.view addSubview:customHeader];
[customHeader release];
self.tableView.frame = CGRectMake(0, customHeader.frame.size.height, self.view.frame.size.width, self.view.frame.size.height - customHeader.frame.size.height);
}
享受!
[UITableView with fixed section headers]可能的重複(http://stackoverflow.com/questions/17582818/uitableview-with-fixed-section-headers) –