我在我的一个项目中遇到了问题。我有一个如图所示的表格 View 。我的问题是我的自定义单元格背景与 UITableView 删除按钮重叠。谁能帮我把它放在前面。
我使用了以下代码,但一些开发人员说如果我们使用该代码,Apple 可能会拒绝您的应用
- (void)layoutSubviews { [super layoutSubviews]; for (UIView *subview in self.subviews) { for (UIView *subview2 in subview.subviews) { //NSLog(@"confirm is %@",[subview2 class]); if ([NSStringFromClass([subview2 class]) isEqualToString:@"UITableViewCellDeleteConfirmationView"]) { // move delete confirmation view [subview bringSubviewToFront:subview2]; } else if ([NSStringFromClass([subview2 class]) isEqualToString:@"_UITableViewCellActionButton"]) { [subview bringSubviewToFront:subview2]; } } } }
另一个问题是下面的代码只适用于 iOS 7 但不适用于 iOS 8。
- 如果我将
- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath;
方法设置为 YES 我没有问题,但我们不想缩进。
任何想法都可能非常有帮助。
最佳答案
UITableViewCell
subview 的层次结构在 iOS 7 和 iOS 8 中不同,请尝试我的解决方案。
- (void)layoutSubviews {
[super layoutSubviews];
for (UIView *subview in self.subviews) {
// for iOS 8
if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationView"]) {
[self bringSubviewToFront:subview];
return;
}
// for iOS 7
for (UIView *subview2 in subview.subviews) {
if ([NSStringFromClass([subview2 class]) isEqualToString:@"UITableViewCellDeleteConfirmationView"]) {
[subview bringSubviewToFront:subview2];
return;
}
}
}
}
关于ios - 删除按钮被自定义单元格覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26798116/