不久前I asked about how to move reorderControl视图靠近我的自定义单元格的中心,所以这个reorderControl打破了自定义设计。由于我无法移动此视图并且我的单元格始终处于编辑模式 - 我只是在我的单元格背景的正确位置绘制此reorderControl。但现在我有两个reorderControls)一个来自我在背景中的正确位置和一个来自iOS。如果我将- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
的返回值设置为NO,则iOS reorderControl会消失,但我无法重新排序行。
如何从屏幕上删除iOS reorderControl并仍然可以重新排序我的自定义UITableViewCell?
ps cell.showsReorderControl = NO;不工作
答案 0 :(得分:1)
这是一种黑客攻击,但以下工作
for(UIView* view in self.subviews)
{
if([[[view class] description] isEqualToString:@"UITableViewCellReorderControl"])
{
for(UIImageView* cellGrip in view.subviews)
{
if([cellGrip isKindOfClass:[UIImageView class]])
[cellGrip setImage:nil];
}
}
}
答案 1 :(得分:1)
我在iOS7中使用它的解决方案是添加另一种方法来查找重新排序控件。由于iOS7中的tableview结构发生了变化,因此跟踪UITableViewCellReorderControl
有点困难。它现在在UITableViewCellScrollView
。
解决方案如下
- (void)changeReorderControl:(UITableViewCell *)cell subviewCell:(UIView *)subviewCell
{
if([[[subviewCell class] description] isEqualToString:@"UITableViewCellReorderControl"]) {
[subviewCell.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
UIImageView *imageView= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"hand"]];
imageView.center = CGPointMake(subviewCell.frame.size.width/2 , subviewCell.frame.size.height/2);
[subviewCell addSubview:imageView];
}
}
- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
for(UIView* subviewCell in cell.subviews)
{
if([[[subviewCell class] description] isEqualToString:@"UITableViewCellScrollView"]) {
for(UIView* subSubviewCell in subviewCell.subviews) {
[self changeReorderControl:cell subviewCell:subSubviewCell];
}
}
}
}
希望你能得到这个想法。