UITableView 的第一行不同

Posted

技术标签:

【中文标题】UITableView 的第一行不同【英文标题】:Different first row for a UITableView 【发布时间】:2012-02-03 10:09:25 【问题描述】:

我需要一个UITableView,其第一行应显示徽标,而其他行应显示其他表格数据。 我尝试了以下代码:

if(indexPath.row == 0) 
    //Code for imageview
 else 
    //Code to display array content

我的问题是我没有得到表格视图中的第一个数组项。

已编辑::

if (indexPath.row == 0) 

        CGRect myImageRect = CGRectMake(120.0f, 5.0f, 70.0f, 55.0f);
        UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect];
        [myImage setImage:[UIImage imageNamed:@"logo.png"]];
        [cell.contentView addSubview:myImage];
    
    else  

       NSDictionary *dict = [menuitems objectAtIndex:indexPath.row];

        cell.textLabel.text =[dict objectForKey:@"category"]; 
       

【问题讨论】:

if(indexPath.row == 0) 是正确的,你能发布-----imageview的代码----? 【参考方案1】:

尝试使用标题视图。使用以下代码将徽标放在行首。

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

    UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
    UIImageView *myimgvw = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
    [myimgvw setImage:[UIImage imageNamed:@"logo.png"]];
    [myView addSubview:myimgvw];

    return myView; 

【讨论】:

感谢您的回答。当我添加这个时,标题图像覆盖了 uitableview 的第一行。我该如何克服呢? 转到xib文件->选择该表->检查表视图大小->将值放入标题字段“50”或任何您想要的。【参考方案2】:

您尚未显示显示数组内容的代码,但我猜您正在使用类似

[dataArray objectAtIndex:indexPath.row];

但是因为您在第 0 行显示图像,所以您需要将其偏移 -1。换句话说,表中的第二行的 indexPath.row = 1,但您需要将其设为 objectAtIndex:0。

【讨论】:

按照你的想法,你不会有数组的最后一个元素。 @androniennn 我不明白为什么会这样。只要你返回数组大小 + 1 的单元格数就没有问题。 是的,确切地说,在numberofrows 委托中,我们返回arraysize+1,然后我们将始终拥有最后一个元素。那是我的错。我正在检查if(indexPath.row==0),然后返回customCell1,否则返回indexPath.row-1customCell2,这样我就永远不会有最后一个元素。【参考方案3】:

然后你需要在上面代码 sn-p 的 else 部分中使用 indexPath-1 来显示文本而不是 indexPath。

【讨论】:

以上是关于UITableView 的第一行不同的主要内容,如果未能解决你的问题,请参考以下文章

将 UITable 行号从大到小反转(...5,4,3,2,1)

UITable 单元格的不同视图

子视图覆盖了 UITableView 的第一行

在 SWIFT 中自定义 UITableview 的第一行

删除 UItableView Cell 的第一行分隔符

(iPhone/iOS) UISearchBar Scope Buttons 覆盖 UITableView 的第一行