1

假设我有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
        }
  }
4

2 回答 2

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;
}
于 2012-04-26T19:59:46.447 回答
0

而是在表格视图中做任何事情;我会检查数据模型,并可能相应地更新数据模型。

您正在显示节标题数组中的节标题(我假设);

您可以检查该部分的行/记录是否存在;如果没有,则相应地更新您的部分标题数组;

sectionTitleArray = [@"First Section", @"Second Section", @"Third Section"]

rowValueArray = [[NSArray arrayWithObjects:@"First1",@"First2"],[NSArray array],[NSArray arrayWithObjects:@"Third1",@"Third3"]

if([[rowValueArray objectAtIndex:1]count]<0){

//第二部分的行为空;**

然后更新 sectionTitleArray

sectionTitleArray = [@“第一节”,@“节为空”,@“第三节”]

}

它只是一个场景,而不是实际代码。

于 2012-04-26T20:18:53.340 回答