我有一个简单的应用程序,在地图上显示公共交通工具。它具有在地图上启用/禁用显示特定传输路径的功能。它是UITableView
中的列表,在每个单元格中都有一个路由名称和一个检查符号,用于显示路由是启用还是禁用。问题是当我点击列表的底部单元格(因此,出现检查符号,因此路由已启用),然后我多次向上和向下滚动列表,之后,先前点击的单元格上的检查符号消失,我不知道为什么。但是虽然检查标志消失了,但是启用了适当的路线,知道它的问题。看起来问题在于我实现tableView:cellForRowAtIndexPath:
继承类的UITableViewController
方法。这是:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellIdentifier = @"Cell";
FilterTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
BOOL isChecked;
if (indexPath.section == 1) {
cell.routeLabel.text = trollRoutes[indexPath.row]; // array of route names
cell.directionLabel.text = trollDirections[indexPath.row]; // one more array of route names
cell.isChecked = trollCheck[indexPath.row];
// trollCheck is array of BOOL values, each value means if route is enabled or disabled
cell.checkedLabel.text = cell.isChecked ? @"✓" : @"";
}
// same for trams, we're reading values from other arrays, it display first, and there are NO problems with it
else if (indexPath.section == 0) {
cell.routeLabel.text = tramRoutes[indexPath.row];
cell.directionLabel.text = tramDirections[indexPath.row];
cell.isChecked = tramCheck[indexPath.row];
cell.checkedLabel.text = cell.isChecked ? @"✓" : @"";
}
return cell;
}
滚动表时,trollCheck
数组的值不会更改。我的代码有什么问题?