我有以下代码,有2个部分。我希望第一部分有3个单元格,有文本,第二部分没有文字。问题是在第2节中的第6个细胞之后,细胞重复第1节中的文本。
所以我的单元格如下:第1部分 - 配置文件,联系人,设置;第2节 - 空白,空白,空白,空白,配置文件,联系人,设置。
我做错了什么?
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 2;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if(section == 0) return 3;
else return 9;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"LeftMenuCell";
UITableViewCell *cell = (UITableViewCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(indexPath.section == 0) {
switch (indexPath.row) {
case 0:
cell.textLabel.text = @"Profile";
break;
case 1:
cell.textLabel.text = @"Contacts";
break;
case 2:
cell.textLabel.text = @"Settings";
break;
default:
break;
}
} else {
//nothing should appear in these cells
}
return cell;
}
答案 0 :(得分:6)
表视图单元格重复使用,即dequeueReusableCellWithIdentifier
可以返回以前用于显示不同行的单元格。
因此您必须设置内容 明确地,即使在其他情况下:
} else {
//nothing should appear in these cells
cell.textLabel.text = @"";
}
答案 1 :(得分:1)
这是由于细胞重用造成的。在不需要显示文本的情况下设置cell.textLabel.text = @"";
。
if(indexPath.section == 0) {
//Your code
// ....
} else {
cell.textLabel.text = @"";
}
答案 2 :(得分:0)
当你使用Allocs细胞时使用它
static NSString *CellIdentifier = @"LeftMenuCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell=[[UITableViewCell alloc]initWithStyle: UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
答案 3 :(得分:0)
细胞被重复使用。看到 dequeueReusableCell 。
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
这是因为Tableview Cell被重用,所以你需要在你的其他情况下添加这个cell.textLabel.text = @"";
。这意味着第二部分。