占位符单元格位于UITableView中

时间:2012-04-26 19:48:30

标签: ios ios5 uitableview

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

2 个答案:

答案 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”]

     

}

这只是一个场景,而非实际代码。