【问题标题】:How can you get the selected rows from a UITableView?如何从 UITableView 中获取选定的行?
【发布时间】:2013-03-30 23:18:42
【问题描述】:

所以我编写了这段代码来在我想要选择的行旁边打一个复选标记,因为我想要多个选择的行

UITableViewCell *cell = [tableView cellForRowAtIndexPath:path];

if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
    cell.accessoryType = UITableViewCellAccessoryNone;
} else {
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
}

但是当我使用方法时:

NSArray *selectedIndexPaths = [self.LightsView indexPathsForSelectedRows];

它只获取我点击的最后一行。勾号是不是没有选中?

【问题讨论】:

  • 不,选择的是最后被点击的行并且尚未取消选择。与细胞的配件无关。您需要自己跟踪“选定”(我们称它们为已检查,这样更合适)行。
  • 还要确保您的tableView:cellForRowAtIndexPath: 识别出可以重复使用的单元格,因此,它必须根据需要重置该行的accessoryType;不要试图依靠accessoryType 来了解您是否“检查”了一行。有一个单独的模型支持您的 tableview 跟踪哪些行被“检查”,并让您的上述代码更新该模型以及 UI,并让 tableView:cellForRowAtIndexPath: 也引用该模型。

标签: ios objective-c xcode uitableview


【解决方案1】:

要使indexPathsForSelectedRows: 方法正常工作,您必须配置表格视图以允许选择多个单元格:

tableView.allowsMultipleSelection = YES;

【讨论】:

    猜你喜欢
    • 2015-07-13
    • 2020-03-21
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多