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-1
customCell2,这样我就永远不会有最后一个元素。【参考方案3】:
然后你需要在上面代码 sn-p 的 else 部分中使用 indexPath-1 来显示文本而不是 indexPath。
【讨论】:
以上是关于UITableView 的第一行不同的主要内容,如果未能解决你的问题,请参考以下文章