没有结果-UITableView iPhone

问题描述

| 我尝试在表视图为空时在其表视图上显示无结果消息。我已经完成了uilabel方法,当它为空时它会出现,但是好像这不是Apple在“联系人”等中所做的那样,当您尝试上下滚动时,“无结果”也会移动。我只是呆在那里。 有谁知道如何做到这一点? 我认为他们添加了“无结果”单元格?     

解决方法

        是。如果没有要显示的结果,请执行以下操作 创建一个名为noResultsToDisplay或其他名称的布尔标志。 如果没有要显示的结果,则设置
noResultsToDisplay = YES
,否则将其设置为
NO
。 在numberOfRowsInSection中,
if (noResultsToDisplay) return 3;
在cellForRowAtIndexPath中,
if (noResultsToDisplay && indexPath.row == 2) cell.textLabel.text = @\"No Results\";
    ,        
#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;
}
    ,        这样做的两种方式:要么按照您自己的建议做,要么制作一个“无结果单元格”,然后在tableViewController中将BOOL resultIsEmpty = YES设置为状态。在cellForRowAtIndexPath中,您首先要测试此空BOOL并仅返回无结果单元格,请记住还要签入numberOfRowsInSection,以便在为空的情况下可以返回1(否则它可能会返回模型数组的长度,当然这是0)。 另一种方法是在表格视图上进行y插入并将标签放置在那里。之所以可以这样做,是因为UITableView是UIScrollView的子类。
self.tableView.contentInset = UIEdgeInsetsMake(heighOfNoResultLabel,0);
然后在\“ resultsDidLoad \”或调用新数据的委托中,测试它是否为0并插入tableView并在其中放置标签。如果不是0,则将插图设置为
self.tableView.contentInset = UIEdgeInsetsMake(0,0);
全部为0。您可以设置此属性的动画,以便在没有结果时,将“ \ scrolls \”表视图向下滚动以显示““没有结果””标签。 Bot解决方案在相同数量的代码上是有效的。区别可能是您以后可以执行的操作。     ,        我已经解决了这一问题,方法是使用与表相同的字段来维护标签视图,并使用标签和表的“ hidden \”属性(始终为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

}