UITableView不会显示重新排序控件

时间:2018-02-17 15:56:36

标签: ios uitableview

我知道之前已经问过,但是通常的修复(实现委托和数据源方法,适当地设置委托和数据源等)都不起作用。我绝对难过。

尽管设置了委托和数据源,将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;
}

1 个答案:

答案 0 :(得分:1)

啊,想通了。我压倒了错误的方法。我重写了moveRowAtIndexPath:toIndexPath:,而不是tableView:moveRowAtIndexPath:toIndexPath:。第一个可能是UITableView上实际移动行的方法。它出现在自动完成中,因为这个tableView是它自己的委托和数据源。我已经实施了正确的方法,现在可以使用了。