当我在UITableview上滚动时,多个选定行的复选标记将消失。如何解决此问题?

时间:2017-03-07 04:34:21

标签: ios objective-c uitableview row multipleselection

我想在UITableview中实现多行选择。但是当我选择带有复选标记的多行并向下滚动时,当我回到选定的行部分时,复选标记会消失。我已尝试过Stackoverflow的许多解决方案,但它没有&#39对我有用。可以请任何人给我一个适合我的解决方案。

CREATE TABLE table1
(table1id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (table1id));

CREATE TABLE table2
(table2id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (table2id));

CREATE TABLE table3
(table1id INT NOT NULL AUTO_INCREMENT,
table2id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (table1id, table2id));

2 个答案:

答案 0 :(得分:2)

问题在于这段代码:

if([_selectedstatearray containsObject:indexPath]) {
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else {
    cell.accessoryType = UITableViewCellAccessoryNone;
}

您正在检查_selectedstatearray是否包含指定的indexPath,同时将它们存储为NSString [_selectedstatearray addObject:cellText];

用以下代码替换上面的代码:

NSString *text = [statearray objectAtIndex:indexPath.row];
if([_selectedstatearray containsObject:text]) {
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else {
    cell.accessoryType = UITableViewCellAccessoryNone;
}

答案 1 :(得分:0)

回答你的上一次评论

如果您将 selectedstatearray 传递给仅包含 {{的另一个ViewController's(viewControllerB)UITableView 1}} 然后你可以添加

  

cell.accessoryType = UITableViewCellAccessoryCheckmark

在您的UITableVIew委托方法

selectedstatearray

这将为所有行添加复选标记

希望它有所帮助......