2015-02-11 2 views
0

У меня есть UITableView с пользовательским UITableViewCell с использованием Swift. Когда я устанавливаю self.MyTable.editing = true, я вижу значок удаления в строке и, похоже, добавляет место для значка переупорядочения слева, но значок переупорядочения никогда не отображается.Контроль порядка не отображается для UITableView

Я подтвердил, что это не проблема с шириной таблицы, добавив кнопку в ячейку. Когда в режиме редактирования, кнопка нажата влево, где я предполагаю, что значок переупорядочения должен быть.

Я что-то теряю в реализации в 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

Разъяснения: появляюсь, чтобы добавить пространства для значка переупора на * праве * – billd

ответ

1

После долгих проб и ошибок я нашел причину.

В моем обычае UITableViewCell я переопределение willTransitionToState и забыл назвать super.willTransitionToState (состояние)

+0

я не могу upvote этого ответа достаточно. У меня была такая же проблема, и я забыл вызвать super.layoutSubviews() в моей главной функции. ВСЕГДА используйте супер при переопределении функции, люди! – Audioy

Смежные вопросы