对于iPhone,是否可以配置UITableView以允许多选?
我已经尝试覆盖-setSelected:animated:
每个UITableViewCell,但试图捏造所需的行为是棘手的,因为很难将真正的取消选择与UITableView认为由于选择另一个单元格而未取消选择的那些取消!
希望有人可以帮忙!
谢谢,
缺口.
如果您正在为iOS5.0 +开发应用程序,以下属性应该可以正常工作
self.tableView.allowsMultipleSelection = YES;
执行此操作的最佳方法是选中每行的复选标记.
您可以通过将所选UITableViewCell实例上的accessoryType设置为UITableViewCelAccessoryCheckmark来实现.
要取消选择该行,请将其重新设置为UITableViewCellAccessoryNone.
要枚举选择了哪些单元格/行(例如,单击按钮时),只需遍历表格的单元格以查找UITableViewCellAccessoryCheckmark.或者,在"确定选择"委托方法中管理表视图委托中的某些NSSet等.
使用以下代码设置单元格附件类型:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *thisCell = [tableView cellForRowAtIndexPath:indexPath]; if (thisCell.accessoryType == UITableViewCellAccessoryNone) { thisCell.accessoryType = UITableViewCellAccessoryCheckmark; }else{ thisCell.accessoryType = UITableViewCellAccessoryNone; } } - (UITableViewCellAccessoryType)tableView:(UITableView *)tableView accessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath { //add your own code to set the cell accesory type. return UITableViewCellAccessoryNone; }
Jeff Lamarche在这里有一个如何做到这一点的教程:
http://iphonedevelopment.blogspot.com/2008/10/table-view-multi-row-edit-mode.html
我没有尝试过代码,但是我已经想到了一段时间,知道我需要它的那一天会到来.
我向后移植allowsMultipleSelectionDuringEditing
,allowsMultipleSelection
从iOS5到旧iOS.您可以在https://github.com/ud7/UDTableView-allowsMultipleSelection上分叉它
它是替代品,你只需要做的就是将UITableView更改为UDTableView(在代码或界面构建器中)
来自HIG:
表视图在用户选择列表项时提供反馈.具体地说,当可以选择一个项目时,包含该项目的行会在用户选择该项目以显示已收到选择时突出显示.然后,立即执行操作:显示新视图或行显示复选标记以指示已选择该项目.该行永远不会突出显示,因为表视图不会显示持久选定状态.
您需要使用类似邮件的东西或使用单元格上的复选标记附件来滚动自己的多种选择样式.
您需要多种选择的人
self.tableView.allowsMultipleSelection = YES;
在viewDidLoad和
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *tableViewCell = [tableView cellForRowAtIndexPath:indexPath]; tableViewCell.accessoryView.hidden = NO; // if you don't use custom image tableViewCell.accessoryType = UITableViewCellAccessoryCheckmark; } - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *tableViewCell = [tableView cellForRowAtIndexPath:indexPath]; tableViewCell.accessoryView.hidden = YES; // if you don't use custom image tableViewCell.accessoryType = UITableViewCellAccessoryNone; }