当前位置:  开发笔记 > 编程语言 > 正文

是否可以配置UITableView以允许多项选择?

如何解决《是否可以配置UITableView以允许多项选择?》经验,为你挑选了7个好方法。

对于iPhone,是否可以配置UITableView以允许多选?

我已经尝试覆盖-setSelected:animated:每个UITableViewCell,但试图捏造所需的行为是棘手的,因为很难将真正的取消选择与UITableView认为由于选择另一个单元格而未取消选择的那些取消!

希望有人可以帮忙!

谢谢,

缺口.



1> Hamdi..:

如果您正在为iOS5.0 +开发应用程序,以下属性应该可以正常工作

self.tableView.allowsMultipleSelection = YES;


这是处理tableView中多个选择的标准iOS方式.另请参阅Apple的示例https://developer.apple.com/library/ios/samplecode/TableMultiSelect/Introduction/Intro.html

2> z8000..:

执行此操作的最佳方法是选中每行的复选标记.

您可以通过将所选UITableViewCell实例上的accessoryType设置为UITableViewCelAccessoryCheckmark来实现.

要取消选择该行,请将其重新设置为UITableViewCellAccessoryNone.

要枚举选择了哪些单元格/行(例如,单击按钮时),只需遍历表格的单元格以查找UITableViewCellAccessoryCheckmark.或者,在"确定选择"委托方法中管理表视图委托中的某些NSSet等.


这里有一个使用"did select"委托方法来跟踪所选单元格/行的一个很好的例子:(http://stackoverflow.com/questions/6985907/iphone-how-to-allow-multiple-selection-in -tabelview换一个定制单元)

3> Benjamin Ort..:

使用以下代码设置单元格附件类型:

    - (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;
}


在iOS 4.x下进行编译时,会收到以下警告:警告:由于tableView:accessoryTypeForRowWithIndexPath:在中的委托实现,使用旧版单元格布局.请删除此方法的实现,并将单元属性accessoryType和/或editingAccessoryType设置为移动到新单元格布局行为.将来的版本将不再调用此方法.仅供参考.

4> oldbeamer..:

Jeff Lamarche在这里有一个如何做到这一点的教程:

http://iphonedevelopment.blogspot.com/2008/10/table-view-multi-row-edit-mode.html

我没有尝试过代码,但是我已经想到了一段时间,知道我需要它的那一天会到来.



5> RolandasR..:

我向后移植allowsMultipleSelectionDuringEditing,allowsMultipleSelection从iOS5到旧iOS.您可以在https://github.com/ud7/UDTableView-allowsMultipleSelection上分叉它

它是替代品,你只需要做的就是将UITableView更改为UDTableView(在代码或界面构建器中)



6> Ben Gottlieb..:

来自HIG:

表视图在用户选择列表项时提供反馈.具体地说,当可以选择一个项目时,包含该项目的行会在用户选择该项目以显示已收到选择时突出显示.然后,立即执行操作:显示新视图或行显示复选标记以指示已选择该项目.该行永远不会突出显示,因为表视图不会显示持久选定状态.

您需要使用类似邮件的东西或使用单元格上的复选标记附件来滚动自己的多种选择样式.



7> Raphael Oliv..:

您需要多种选择的人

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;
}

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有