- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.textColor=[UIColor blackColor];
cell.textLabel.font=[UIFont fontWithName:@"Helvetica Neue" size:14.0];
if (indexPath.section == 0) {
switch (indexPath.row) {
case 0:
cell.textLabel.text=@"Sub-Scheme 1";
break;
case 1:
cell.textLabel.text=@"Sub-Scheme 2";
break;
case 2:
cell.textLabel.text=@"Sub-Scheme 3";
break;
case 3:
cell.textLabel.text=@"Sub-Scheme 4";
break;
case 4:
cell.textLabel.text=@"Sub-Scheme 5";
break;
default:
break;
}
}else{
cell.textLabel.text=@" ";
}
return cell;
}
答案 0 :(得分:1)
使用不同的单元格标识符
例如像贝娄......
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *CellIdentifier = [NSString stringWithFormat:@"%d,%d",indexPath.section,indexPath.row];
UITableViewCell *cell = [_tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
/// write your code here..
}
}
或者设置为零,如下...
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//static NSString *CellIdentifier = @"CellIdentifier";
UITableViewCell *cell = [_tableView dequeueReusableCellWithIdentifier:nil];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil] autorelease];
/// write your code here..
}
}
答案 1 :(得分:1)
不要重复使用细胞是最简单的方法。
package com.checkaidev1;
public class ItemAnalysis {
public int itemNumber;
public String correctKey;
public double itemDifficulty;
public String evaluation;
// Empty constructor
public ItemAnalysis(){
}
public ItemAnalysis(int itemNumber, String correctKey, double itemDifficulty, String evaluation){
this.itemNumber = itemNumber;
this.correctKey = correctKey;
this.itemDifficulty = itemDifficulty;
this.evaluation = evaluation;
}
// getting name
public int getItemNumber(){
return this.itemNumber;
}
// setting name
public void setItemNumber(int itemNumber){
this.itemNumber = itemNumber;
}
// getting name
public String getCorrectKey(){
return this.correctKey;
}
// setting name
public void setCorrectKey(String correctKey){
this.correctKey = correctKey;
}
public double getItemDifficulty(){
return this.itemDifficulty;
}
// setting name
public void setItemDifficulty(double itemDifficulty){
this.itemDifficulty = itemDifficulty;
}
public String getEvaluation(){
return this.evaluation;
}
// setting name
public void setEvaluation(String evaluation){
this.evaluation = evaluation;
}
希望它适合你。
答案 2 :(得分:1)
您必须使用dequeueReusableCellWithIdentifier:
重复使用单元格才能获得更好的性能和内存优化。
你的核心问题是别的。在重新使用之前,您不会重置单元格。我的建议是在出列操作后重置单元格文本标签cell.textLabel.text = @""
,然后在交换机中设置标签。
我建议您在切换到不重复使用单元格之前尝试一次。
基本上,这就是你的代码应该是这样的:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *cellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
cell.textLabel.textColor = [UIColor blackColor];
cell.textLabel.font = [UIFont fontWithName:@"Helvetica Neue" size:14.0];
cell.textLabel.text = @""; // Reset Text Label before re-using
... rest of your code...
}
答案 3 :(得分:1)
参见下面的编码。我试过这个。当我滚动tableview时,不再重复cell.textLabel.text
NSMutableArray *arrayRepeat;
在viewDidLoad
中 arrayRepeat = [[NSMutableArray alloc]initWithObjects:@"Sub-Scheme 1",@"Sub-Scheme 2",@"Sub-Scheme 3",@"Sub-Scheme 4",@"Sub-Scheme 5", nil];
UITableViewDataSource方法
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return arrayRepeat.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.textColor = [UIColor blackColor];
cell.textLabel.font = [UIFont fontWithName:@"Helvetica Neue" size:14.0];
cell.textLabel.text = [NSString stringWithFormat:@"%@",[arrayRepeat objectAtIndex:indexPath.row]];
return cell;
}
答案 4 :(得分:0)
必须重复使用细胞,不将它们出列并不是一个好的解决方案。您遇到的问题当然与单元格的出列有关,但如果为所有情况提供文本标签的值,则可以解决该问题。
如果您使用此替换默认情况,可能会解决您的问题:
default: cell.textLabel.text=@"";
break;