iOS8中出现UITableViewCell编辑模式左圆圈
Posted
技术标签:
【中文标题】iOS8中出现UITableViewCell编辑模式左圆圈【英文标题】:left circle in UITableViewCell editing mode appears in iOS8 【发布时间】:2014-09-12 06:19:16 【问题描述】:所以我刚刚安装了 Xcode 6GM 并在运行 ios8 的模拟器上摆弄了我的 iOS7 应用程序。
我有一个 UITableView
处于编辑模式,现在单元格左侧有一个圆圈,在 iOS7 上运行时不会出现。
我浏览了 iOS8 的文档,但没有看到任何新常量,我正在使用 UITableViewCellEditingStyleNone
和 UITableViewCellSelectionStyleNone
。
当 tableView.editing = NO 时,该圆圈消失,也 allowedMultipleSelectionDuringEditing = YES。
如果有人能告诉我发生了什么,那就太好了:)
编辑:从 XCode6GM 编译到我的运行 iOS7.1 的 iPhone 上也给了我这个圆圈。我怀疑 XCode6GM 有错误?
这是带有圆圈的屏幕截图:
【问题讨论】:
你能显示“左圆”的屏幕截图吗?供您参考,UIView 中添加了一个新属性,用于从它继承的所有对象。它可能是你提到的“左圈”。见:***.com/questions/25762723/… @Ricky 它似乎不是.. 这就像索引为 3 的未记录的 UITableViewEditingStyle 在选择时给你一个带有复选标记的圆圈,除了奇怪的部分是我不能甚至让它“检查”。在我决定在 SO 上发帖之前,我花了一个小时浏览新文档和另一个小时摆弄。 (如果其他人发现这个问题略有不同。)我也被重叠的圆圈所困扰,但就我而言,我想利用它。然后我记得我已经实现了以下内容:- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath return NO;
我将返回更改为YES
,一切都很好。
【参考方案1】:
我在将我的应用程序迁移到 iOS8 时遇到了这个烦人的问题。
这是我找到的解决方法...在您的 UITableViewCell 子类中添加类似的内容:
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
[super setEditing:editing animated:animated];
for( UIView* subview in self.subviews )
if( [NSStringFromClass(subview.class) isEqualToString:@"UITableViewCellEditControl"] )
subview.hidden = YES;
我希望这将很快被记录/修复...
【讨论】:
UITableViewCellEditControl 嗯? wth...但是干得好! :) 这是一个很好的解决方法,当表格的allowMultipleSelectionDuringEditing 设置为YES 时,它似乎是摆脱那些灰色圆圈的唯一方法。我添加了几件小事:首先,通过使用 -if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1) 包装仅针对 iOS 8 执行此操作。其次,当第一个子视图被隐藏时,添加一个中断以退出循环。【参考方案2】:我想我有更好的解决方案,将此代码添加到您的自定义 uitableviewcell:
- (void)addSubview:(UIView *)view
[super addSubview:view];
if( [NSStringFromClass(view.class) isEqualToString:@"UITableViewCellEditControl"] )
view.hidden = YES
【讨论】:
这可能有风险,谁知道系统使用该子视图做什么。我更喜欢原始答案,它只是隐藏视图,同时在层次结构中保持完整。 @VitaliTchalov 是的,也许你可以在这里设置它的隐藏属性而不是绕过“addSubview”调用。【参考方案3】:这是一个结合两个答案的 Swift 解决方案:
override func addSubview(view: UIView)
super.addSubview(view)
if view.isKindOfClass(NSClassFromString("UITableViewCellEditControl")!)
view.hidden = true
【讨论】:
【参考方案4】:这里是 Swift3 版本:
override func addSubview(_ view: UIView)
super.addSubview(view)
if view.classAsString() == "UITableViewCellEditControl"
view.isHidden = true
【讨论】:
UIView 类型的值没有成员 classAsString以上是关于iOS8中出现UITableViewCell编辑模式左圆圈的主要内容,如果未能解决你的问题,请参考以下文章
UITableViewCell 在 iOS8 的编辑模式下没有裁剪到边界(适用于 iOS7.1)
如何在自定义 UITableViewCell 中控制 UITextFields 的编辑
包含 UITableView 的 UITableViewCell 的高度(iOS8 和 AutoLayout)