2015-10-23 4 views
2

У меня есть быстрое приложение с табличным представлением, где ячейки являются динамическими. То, что я хочу достичь, заключается в том, что пользователь может пронести по экрану ячейку, и она отображает две плитки, одну для редактирования и одну для удаления (пример этого будет в приложении сообщений, где вы будете прокручивать для опции удаления)Таблицы, редактирование и перетаскивание ячеек

у меня две плитки, чтобы показать с помощью:

func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? { 
    let editRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: " Edit ", handler:{action, indexpath in 
    }); 
    moreRowAction.backgroundColor = UIColor.orangeColor() 

    let deleteRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Delete", handler:{action, indexpath in 

    return [editRowAction, deleteRowAction] 
} 

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

Второй вопрос, когда клетка находится в режиме редактирования, я хочу, чтобы иметь возможность переместить ячейку в Tableview: следующие учебные пособия я реализовал ниже:

func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool { 
    return true 
} 
func tableView(tableView: UITableView, moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath) { 
    let sourceRow = sourceIndexPath.row; 
    let destRow = destinationIndexPath.row; 
    let object = ArrayList.objectAtIndex(sourceRow) 
    ArrayList.removeObjectAtIndex(sourceRow) 
    ArrayList.insertObject(object, atIndex: destRow) 
} 

и установить следующее, когда я хочу поместить ячейку в режим

TableView.setEditing(true, animated: true) 

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

Благодаря

ответ

2

Чтобы избавиться от кнопки удалить, вы должны быть в состоянии установить стиль редактирования для ни (или что-то еще)

func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle { 
    return tableView.editing ? UITableViewCellEditingStyle.None : UITableViewCellEditingStyle.Delete 
} 

, чтобы скрыть кнопки после прикосновения вы можете установить tableView.editing или перезагрузить ячейку.

tableView.editing = false 

альт

tableView.reloadRowsAtIndexPaths(indexPaths: [NSIndexPath], withRowAnimation: UITableViewRowAnimation.Automatic) 

// Все задействованные методы делегата:

func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { 
    return true 
} 

func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? { 
    let editRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: " Edit ", handler:{action, indexpath in 
      self.tableView.editing = false 
    }) 

    let deleteRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Delete", handler:{action, indexpath in 
      self.tableView.editing = false 
    }) 

    return [editRowAction, deleteRowAction] 
} 

func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle { 
    return tableView.editing ? UITableViewCellEditingStyle.None : UITableViewCellEditingStyle.Delete 
} 

func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool { 
    return true 
} 

func tableView(tableView: UITableView, moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath) { 

} 
+0

привет там, спасибо за ответ, если я установить Func Tableview (Tableview: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle { return UITableViewCellEditingStyle.None } он полностью отключает плитки –

+0

Может лет u включать и выключать его в зависимости от того, какое действие вы выполняете? – Moriya

+0

что бы мне нужно было переключать на это, когда я хочу, чтобы ячейки были видны? Те, что я пробовал, похоже, не позволяют видеть плитки? –

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