我知道之前已经问过,但是通常的修复(实现委托和数据源方法,适当地设置委托和数据源等)都不起作用。我绝对难过。
尽管设置了委托和数据源,将tableView设置为编辑,告诉单元格显示重新排序控件并实现所需的方法,但是不会显示重新排序控件。 tableView进入编辑模式,因为我可以看到删除控件。但重新排序控制从未显示,我无法对细胞进行重新排序。
我甚至删除了所有自定义单元格加载和自定义,以防出现问题。我只是不知道出了什么问题。奇怪的是tableView:canMoveRowAtIndexPath:
似乎没有被调用,因为日志永远不会出现在控制台中。
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame style:UITableViewStyleGrouped];
if (self) {
self.delegate = self;
self.dataSource = self;
self.backgroundColor = [UIColor colorWithRed:0.1 green:0.1 blue:0.1 alpha:1.0];
self.separatorInset = UIEdgeInsetsZero;
self.delaysContentTouches = NO;
[self loadImagePicker];
[self registerClass:[ExpandingTitleTableViewCell class] forCellReuseIdentifier:[ExpandingTitleTableViewCell reuseIdentifier]];
[self registerClass:[SliderTableViewCell class] forCellReuseIdentifier:[SliderTableViewCell reuseIdentifier]];
[self registerClass:[UndoRedoTableViewCell class] forCellReuseIdentifier:[UndoRedoTableViewCell reuseIdentifier]];
[self registerClass:[NudgeImageTableViewCell class] forCellReuseIdentifier:[NudgeImageTableViewCell reuseIdentifier]];
self.alwaysBounceVertical = NO;
self.editing = YES;
}
return self;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *reuseIdentifier = nil;
Class cellClass = nil;
//Custom cell class setting code was here
reuseIdentifier = @"Cell";
cellClass = [UITableViewCell class];
//Cell customisation code was here
cell.showsReorderControl = YES;
return cell;
}
- (void)moveRowAtIndexPath:(NSIndexPath *)indexPath toIndexPath:(NSIndexPath *)newIndexPath {
//TBC
}
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"Can move row");
return YES;
}
答案 0 :(得分:1)
moveRowAtIndexPath:toIndexPath:
,而不是tableView:moveRowAtIndexPath:toIndexPath:
。第一个可能是UITableView
上实际移动行的方法。它出现在自动完成中,因为这个tableView是它自己的委托和数据源。我已经实施了正确的方法,现在可以使用了。