我有一个使用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 ]
}
答案 0 :(得分:1)
经过多次试验和错误,我找到了原因。
在我的自定义UITableViewCell中,我覆盖了willTransitionToState并忘记调用super.willTransitionToState(state)
答案 1 :(得分:0)
如果您要覆盖layoutSubviews()
,请确保在超类上调用layout子视图。
override func layoutSubview() {
super.layoutsubviews()
// custom implementation
}