假设我有UITableView
有两个部分。如果该部分的数据源为空,我想显示一个占位符单元格,文本“部分名称为空。”
我该怎么做?
代码
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
if(section == 1)
{
return @"Section One";
}
if(section == 0)
{
return @"Section Two";
}
return @"";
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (section == 1)
{
return self.sectionOne.count;
}
else
{
return self.sectionTwo.count;
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSArray *theSource =[[NSArray alloc] init];
if(indexPath.section == 1)
{
theSource = self.sectionOne;
}
else
{
theSource = self.sectionTwo;
}
// See if there's an existing cell we can reuse
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellIdentifier"];
if (cell == nil)
{
// No cell to reuse => create a new one
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CellIdentifier"];
cell.backgroundView = [[UIImageView alloc] init];
// Continue creating cell
}
}
答案 0 :(得分:3)
在UITableViewDataSource(伪代码)中实现以下函数:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (datasource == empty)
return 1;
else
return [datasource count];
}
和
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (datasource == empty)
return stub cell;
else
return regular cell;
}
答案 1 :(得分:0)
而不是在表视图中做任何事情;我会检查数据模型,并可能相应地更新数据模型。
您正在显示部分标题数组中的部分标题(我假设);
您可以检查该部分的行/记录是否存在;如果没有,那么相应地更新你的部分标题数组;
sectionTitleArray = [@"First Section", @"Second Section", @"Third Section"]
rowValueArray = [[NSArray arrayWithObjects:@“First1”,@“First2”],[NSArray数组],[NSArray arrayWithObjects:@ “Third1”,@ “Third3”]
if([[rowValueArray objectAtIndex:1] count]< 0){
//行为空为 第二节; ** 强>
然后更新sectionTitleArray
sectionTitleArray = [@“First Section”,@“Section is empty”,@“Third Section”]
}
这只是一个场景,而非实际代码。