2012-08-16 65 views
0

我遇到与我的应用程序的“设置”页面有关的问题。我选择使用静态单元格,所以我有几个表格部分,每个部分有3-4个单元格。静态单元格上的Xcode设置附件标记错误

在viewDidLoad中我加载我和NSUserDefaults的设置辅助标志是这样的:

... 
} 
else if (... my Condition3 ...) { 
    indexPath = [NSIndexPath indexPathForRow:2 inSection:0]; 
} 
UITableViewCell* cell = [settingsTable cellForRowAtIndexPath:indexPath]; 
cell.accessoryType = UITableViewCellAccessoryCheckmark; 

这工作得很好,并设置单元格与匹配用对号设置。但是,这仅适用于默认情况下在屏幕上显示的单元格。任何需要滚动的单元格都不包含复选标记。

有没有办法解决这个问题,最好不用动态单元格?

回答

4

啊,我终于想通了。 cellForRowAtIndexPath崩溃的应用程序,所以我必须做到以下几点:

我使用上面的代码(在问题中)在我的viewDidAppear方法中设置需要复选标记的单元格。我还删除所有复选标记,然后像之前一样将其添加到didSelectRowAtIndexPath方法中的选定单元格中。

在每个两种方法我设置一个NSString变量选定单元格的.textview.text,然后实现此方法:

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 

    cell.accessoryType = UITableViewCellAccessoryNone; 

    if ([cell.textLabel.text isEqualToString:[NSString stringWithFormat:@"%@", myFirstString]] || [cell.textLabel.text isEqualToString:[NSString stringWithFormat:@"%@", mySecondString]]) { 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
    } 
} 

希望这可以帮助别人。

+0

如果您在willDisplayCell方法中设置附件就足够了。无需在viewDidAppear中执行此操作。 – 2014-12-27 10:14:34

0

这是因为当你滚动你的单元格重建和检查标记清理。

您需要将其设置在

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath