UITableView不显示重新排序控件

时间:2015-02-11 17:14:42

标签: uitableview swift

我有一个使用Swift的自定义UITableViewCell的UITableView。当我设置self.MyTable.editing = true时,我看到行上的删除图标,它似乎为左侧的重新排序图标添加空间,但是从不显示重新排序图标。

我通过向单元格添加按钮来确认表格不是宽度问题。在编辑模式下,按钮被推到左侧,我认为重新排序图标应该是。

我是否在UITableView或UITableViewCell中缺少实现内容?

class MyCell : UITableViewCell
{
    var previousState : UITableViewCellStateMask = UITableViewCellStateMask.allZeros
    var controller:GolfBagViewController! = nil
    var editButton : UIButton! = UIButton.buttonWithType(UIButtonType.Custom) as UIButton

    override init(style: UITableViewCellStyle, reuseIdentifier: String!) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)

        // allow reordercontrol to be shown
        self.showsReorderControl = true
    }


    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

}


class MyViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet weak var MyTable: UITableView!

    var isEditMode = false

    func SetEditMode(sender:UIBarButtonItem){

        // when set to true, delete icon appears on left but not reorder icon appears
        isEditMode = !isEditMode
        self.MyTable.editing = isEditMode
    }

    func tableView(tableView: UITableView!, canMoveRowAtIndexPath indexPath: NSIndexPath!) -> Bool
    {
        // indicate that this row can be moved
        return true;
    }

    func tableView(tableView: UITableView!, moveRowAtIndexPath sourceIndexPath: NSIndexPath!, toIndexPath destinationIndexPath: NSIndexPath!)
    {
        // this never called since reorder control does not appear      
        var neverGetsHere = 1
    }

    [ OTHER IMPLMENTATION FUNCTIONS NOT SHOWN ]


}

2 个答案:

答案 0 :(得分:1)

经过多次试验和错误,我找到了原因。

在我的自定义UITableViewCell中,我覆盖了willTransitionToState并忘记调用super.willTransitionToState(state)

答案 1 :(得分:0)

如果您要覆盖layoutSubviews(),请确保在超类上调用layout子视图。

override func layoutSubview() {
  super.layoutsubviews()
  // custom implementation
}