我試圖在空的時候在我的tableview上顯示沒有結果消息。我已經完成了uilabel方法,當它是空的時候出現,但它似乎不是蘋果在聯繫人等中如何嘗試上下滾動以顯示「無結果」。我只在一個地方呆在那裏。沒有結果 - UITableView iPhone
有誰知道如何做到這一點?
我認爲他們添加了一個沒有結果的單元格?
我試圖在空的時候在我的tableview上顯示沒有結果消息。我已經完成了uilabel方法,當它是空的時候出現,但它似乎不是蘋果在聯繫人等中如何嘗試上下滾動以顯示「無結果」。我只在一個地方呆在那裏。沒有結果 - UITableView iPhone
有誰知道如何做到這一點?
我認爲他們添加了一個沒有結果的單元格?
是的。如果你沒有要顯示的結果,請執行下列操作
noResultsToDisplay = YES
,否則將其設置爲NO
。if (noResultsToDisplay) return 3;
if (noResultsToDisplay && indexPath.row == 2) cell.textLabel.text = @"No Results";
這樣做的兩種方法:既可以按照你自己的建議做一個「無結果單元格」,並在你的tableViewController中有一個狀態爲BOOL resultIsEmpty = YES。在cellForRowAtIndexPath中,你首先測試這個空的BOOL並且只返回無結果單元格,記得也要檢查numberOfRowsInSection,這樣你可以在空的情況下返回1(否則它可能會返回你的模型數組的長度,當然這是0)。
另一種方法是在表格視圖中插入一個y並在其中放置標籤。這可以做到,因爲UITableView是UIScrollView的子類。
self.tableView.contentInset = UIEdgeInsetsMake(heighOfNoResultLabel, 0, 0, 0);
然後在「resultsDidLoad」或你的新的數據委託調用,你測試是否是0和插圖的的tableView並放置一個標籤那裏。如果不是0,則將插入設置爲
self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);
全部爲0。您可以爲此屬性設置動畫,以便在沒有結果時,tableview「向下滾動」以顯示「無結果」標籤。
Bot解決方案是有效的我會說,大約相同數量的代碼。之後的差異可能是你可以用它做什麼。
#pragma mark -
#pragma mark Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
return 3;
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// Configure the cell...
if (indexPath.row == 2) {
cell.textLabel.text = @"Empty cell";
}
return cell;
}
我已經通過保持與同farme標籤視圖表已經解決了這一點,並打「隱藏「標籤和表格的屬性(總是一個是YES,另一個是NO)。
i have edited the accepted answer to be look like the no search results in tableView
Create a boolean flag named noResultsToDisplay, or something else.
1-If you have no results to display then set noResultsToDisplay = YES, set it to NO otherwise.
2-(this step changed)In numberOfRowsInSection, if (noResultsToDisplay) return 1;
// 1 returned not 3
3-(this step changed) In cellForRowAtIndexPath,
static NSString *CellIdentifier;
if (noResultsToDisplay){
CellIdentifier = @"Cell";
// in my case i use custom cell this step can be skipped if you use the default UITableViewCell
}
else{
CellIdentifier = @"DocInqueryCell";
}
DocumentationInqueryCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
// don't forgt to add cell in your storyboard with identifier Cell and class your custom class , again this step can be skipped if you use the default cell
then
if (noResultsToDisplay) {
cell.textLabel.text = @"No Results";
}else{
do what you want in your custom cell
}
我會把2.在viewDidLoad?謝謝。 – 2011-05-31 09:12:54
@ K.Honda,對不起,我編輯了我的答案。 – EmptyStack 2011-05-31 09:15:42
嗨西蒙,當我把2放入_cellForRowAtIndexPath_,我會得到2個未聲明的標識符錯誤_noResultsToDisplay_和_numberOfRowsInSection_。你知道爲什麼嗎?謝謝。 – 2011-05-31 09:26:25