我使用了以下代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
// cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
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 {
int arrayIndex = [indexPath row]-1 ;
mdict = [mmenuitems objectAtIndex:arrayIndex];
[mdict retain];
cell.textLabel.text =[mdict objectForKey:@"name"];
我在mmenuitems中获得了正确的JSON解析消息,并使用indexPath.row = 0来显示徽标。
但问题是我没有得到tableview中的最后一项
此外,当我滚动tableview时,数据会随机重新加载,同样会重复。
答案 0 :(得分:1)
您可以在numberOfRowsInSection方法中添加+ 1。
答案 1 :(得分:1)
我可以说你需要在你的行数方法中添加1:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [mmenuitems count]+1//add 1 for the logo cell
}
因此,您的行数将是徽标的mmenuitems
数组+ 1单元格中的所有对象。
<强>但是强>
更好的方法是将您的徽标添加到表格视图header view
而不是表格视图行,您可以在视图中加载表格视图后加载:
CGRect myImageRect = CGRectMake(120.0f, 5.0f, 70.0f, 55.0f);
UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect];
[myImage setImage:[UIImage imageNamed:@"logo.png"]];
[self.tableView.tableHeaderView addSubview:myImage];
它会将您的徽标添加到第一个表格行顶部的视图中,并且不会混合在您的表格行中。我相信它会解决你的重复问题。
祝你好运答案 2 :(得分:0)
您可以尝试为单元格使用不同的标识符。由于单元格正在被重用,因此您的内容已被覆盖。这不是好方法,但它解决了这个问题。
答案 3 :(得分:0)
首先,您需要每次都重置您的单元格以避免陈旧数据
if (cell == nil) {
// cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
cell.textLabel.text = nil; //This clears any stale label
for(UIImageView *view in cell.contentView.subviews)
{
[view removeFromSuperView]; // This clears any subview added
}
其次,
您的行数应为
[mmenuitems count] + 1
我相信目前它只是[mmenuitems count]