Objective c 我是否可以将自定义复选标记与UITableView';是否将编辑期间的AllowsMultipleSelection设置为YES?
一幅画胜过千言万语 关于更多的背景信息,我有一个UITableView,它利用iOS 5的Objective c 我是否可以将自定义复选标记与UITableView';是否将编辑期间的AllowsMultipleSelection设置为YES?,objective-c,cocoa-touch,ios5,uitableview,Objective C,Cocoa Touch,Ios5,Uitableview,一幅画胜过千言万语 关于更多的背景信息,我有一个UITableView,它利用iOS 5的允许在编辑过程中进行多次选择设置为YES。这将导致在单元格处于编辑模式时,在单元格左侧显示空的和填充的编辑控件。这种行为正是我想要的。我只想更改这些复选标记的外观 我知道可以编写自定义选择逻辑并基本上滚动我自己的版本(如和),但这正是我想要避免的。该系统已经就位,我希望尽可能多地重复使用它。这是我最近的一次。它简单有效,同时重用了几乎所有的预烘焙系统。然而,这也是一个巨大的漏洞,它依赖于在运行时内省一点后
允许在编辑过程中进行多次选择
设置为YES
。这将导致在单元格处于编辑模式时,在单元格左侧显示空的和填充的编辑控件。这种行为正是我想要的。我只想更改这些复选标记的外观
我知道可以编写自定义选择逻辑并基本上滚动我自己的版本(如和),但这正是我想要避免的。该系统已经就位,我希望尽可能多地重复使用它。这是我最近的一次。它简单有效,同时重用了几乎所有的预烘焙系统。然而,这也是一个巨大的漏洞,它依赖于在运行时内省一点后利用
UITableViewCell
的未记录视图层次结构
简而言之,这只是隐藏了通常负责显示复选标记的视图,允许我添加自己的视图,并在其位置显示。然后,当单元格的选择或编辑状态更改时,我可以操纵此替代视图
要防止出现标准复选标记,只需自定义-layoutSubviews
实现即可。根据文档,在-willTransitionOnState:
和-setEditing:animated:
之后调用它,确保在选择或编辑
更改时状态始终有效
- (void)layoutSubviews
{
[super layoutSubviews];
// Find the offending view, and quietly bury it...
for (UIView* subview in [self subviews])
{
// As determined by NSLogging every subview's class, and guessing which was the one I wanted
if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellEditControl"])
{
[subview setHidden:YES];
}
}
if ([self isEditing])
{
// Show the custom view however you want.
// The value of [self isSelected] will be useful...
}
else
{
// Hide the custom view.
}
}
我仍然欢迎一个解决方案,这是多一点。。。洁食。我用它来改变框架的大小。谢谢:)UITableViewCellEditControl实际上只包含一个UIImageView,它会根据选择状态进行更改。然后,您可以(通过setImage)替换图像,这样您就不必为定位之类的问题而烦恼了。那么tableView:应该在编辑RowAtIndexPath:时定义吗?Doc说它只适用于分组样式的表视图,但它也帮助了我处理普通视图