當在UITableViewController
使用UISearchDisplayController
,但要記住,你是在處理兩個表的意見是非常重要的。
因此,當您將「搜索欄和搜索顯示控制器」拖動到UITableView
(並假設您正在這樣做拖動UIStoryboard
)時,實際上會添加另一個UITableView
,在激活時必須由代碼您的UITableViewController
文件與其他任何UITableView
相同。
考慮一下:
表示完整的數據集可以使用self.tableView
(或者你寫,合成_tableView
)被調用的UITableView的。
表示過濾的數據集(使用搜索條件過濾)的UITableView的可使用self.searchDisplayController.searchResultsTableView
如果您想都默認UITableView
和搜索UITableView
背景顏色來顯示黑色被調用,我可以建議此代碼(工作在TVC上我的應用程序)...
- (void)viewDidLoad {
[super viewDidLoad];
[self.tableView setBackgroundView:nil];
[self.tableView setBackgroundColor:[UIColor blackColor]];
[self.searchDisplayController.searchResultsTableView setBackgroundView:nil];
[self.searchDisplayController.searchResultsTableView setBackgroundColor:[UIColor blackColor]];
}
...
UPDATE
現在我已經完成了我的冗長的演講,我同意實際上在Xcode中存在各種「bug」。如果刪除原始的UISearchBar
,然後在連接之前添加一個新的UITableViewController
,請執行Build &運行。黑色背景在以下和以上的表格視圖中可見。只有在將UISearchBar
設置爲UISearchDisplayController
的出口後,黑色背景纔會被灰色背景「替換」。
所以解決方案...
感謝Olof對Different background colors for the top and bottom of a UITableView的回答。
REPLACE我上面寫有該代碼的代碼,在您的viewDidLoad
方法結束:
- (void)viewDidLoad {
[super viewDidLoad];
...<other code>...
CGRect frame = self.tableView.bounds;
frame.origin.y = -frame.size.height;
UIView* viewBackgroundBlack = [[UIView alloc] initWithFrame:frame];
[viewBackgroundBlack setBackgroundColor:[UIColor blackColor]];
[self.tableView addSubview:viewBackgroundBlack];
[self.tableView setBackgroundView:nil];
[self.tableView setBackgroundColor:[UIColor blackColor]];
[self.searchDisplayController.searchResultsTableView setBackgroundView:nil];
[self.searchDisplayController.searchResultsTableView setBackgroundColor:[UIColor blackColor]];
}
我一直在這一整天。我試着只在搜索欄中拖動,沒有任何問題。在這裏查看截圖(https://www.dropbox.com/s/dnlqajb3wz9vdvo/2014-04-11%2022.45.40.png)。但是,只要以編程方式添加SearchDisplayController,該問題就可以被複制。 –
如果你想重現這個bug,只需檢查我在這裏使用的示例「http://www.appcoda.com/how-to-add-search-bar-uitableview/」並使用tableview的背景顏色更改。 –