问题描述
|
我尝试在表视图为空时在其表视图上显示无结果消息。我已经完成了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
}