代码之家  ›  专栏  ›  技术社区  ›  mjdth

UITableview标题标题标题部分显示不正确

  •  9
  • mjdth  · 技术社区  · 16 年前

    我有一些非常简单的代码来返回节标题的标题:

    - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
        if (section==0) {
            return @"";
        } else if (section==1) {
            return @"Actions";
        } else if (section==2) {
            return @"Attached To";
        }
    
        return @"";
    }
    

    出于某种原因,当标题实际显示在模拟器上时,有一半的时间它们只是第一个字母,然后是省略号。上下滚动(最有可能刷新标题视图)将导致标题在大约一半时间内正确显示,而在另一半时间内显示不正确。

    有人知道这是什么原因吗?我认为这更像是最近的发展,但它似乎发生在几乎所有国家 UITableView

    3 回复  |  直到 16 年前
        1
  •  5
  •   mjdth    16 年前

    我已经弄明白了:代码的实际问题是返回 @"" . 如果只返回一个空白字符串,而不是nil,则会导致页眉和页脚的显示出现问题。

    @" " 仍将为标题保留垂直空间,因此这不是一个可行的选项。我已经更改了所有的实例 return @""; 简单地 return nil;

        2
  •  1
  •   Sebastian    16 年前

    我拷贝&把你的代码传给我的一个项目,它工作得完美无缺(sdk 3.2.1)

    也许错误在另一部分? 正在创建自己的表格单元格吗?如果是,您是否从“tableView:heightForRowAtIndexPath:”返回阿片高度? (那个问题确实影响过我一次)

        3
  •  1
  •   Newbyman    16 年前

    在设置节头标题时,我更成功地使用了一个空NSString,该字符串被设置为相应的节,然后在完成后释放该字符串;以及限制使用嵌套的If()Else()语句。

    我尽量保持它简单和干净。当然,对于我有3个以上节的表,我使用“Switch”语句代替If()语句。

    NSString *sectionHeader=nil; 为编译器提供一个要返回的值,而不管If()语句中嵌入了什么。否则,会收到警告,因为编译器不会在If()语句中搜索返回值。

    您还可以将字符串初始化为“默认”值,例如。 NSString *sectionHeader = @"Default Header Title"; . 如果满足If()语句的非条件,则分配的默认标头值将在整个函数中保持不变,从而作为标题的sectionHeader返回。

    基本结构如下:

    -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    
    //TEMP SECTION STRING HOLDER:
    NSString *sectionHeader = nil;
    
    
    //SET TITLE FOR EACH SECTION:
    if(section == 0) {
        sectionHeader = @"Section Header No. 1";
    }
    
    if(section == 1) {
        sectionHeader = @"Section Header No. 2";
    }
    
    if(section == 2) {
        sectionHeader = @"Section Header No. 3";
    }
    
    
    //RETURN THE SECTION HEADER FOR EACH SECTION:
    return sectionHeader;
    
    }