我在TableView中有两个部分,它们各自的sectionHeaders。 numberOfRowsInSection动态计算&它也可能是0.所以我想在0行的情况下在部分的某处显示默认文本。 我该怎么做呢 ? (适用于iOS 6,XCode-4.2)
答案 0 :(得分:1)
为什么不在“空白部分”的单元格中显示默认文本? 而不是返回0行返回1并将默认文本放在那里。它可以是这样的:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Verify is the section should be empty or not
if(emptySection == NO) {
return numberOfRowsInSection;
}
else {
return 1;
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"Cell Identifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if(!cell)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
if(emptySection && indexPath.row == 0) {
cell.textLabel.text = @"This is the default text";
}
else {
// Display the normal data
}
return cell;
}
<强>更新强>
以下代码将避免在点击包含默认文本的单元格时执行任何操作。
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(emptySection) {
return;
}
// Perform desired action here
}
另一种解决方案是完全阻止选择单元格:
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)path
{
if(emptySection) {
retur nil;
}
return path;
}