Как добавить TableViewController
и заполнить его элементами массива писать, наверное, пока не буду, здесь оставлю вещи посложнее. Хотя, наверное имеет смысл сделать полный гайд, от начала до конца, с такими фишками, как сохранение массива при изменении в TableViewController
и передаче массива в другой ViewController
.
Пока что выпишу, чтобы не забыть, такие шпаргалки:
Возможность изменять порядок элементов в TableViewController:
// Rearrange cells by drag & move
override func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
let movedObjTemp = myAwesomeArray[sourceIndexPath.item]
myAwesomeArray.remove(at: sourceIndexPath.item)
myAwesomeArray.insert(movedObjTemp, at: destinationIndexPath.item)
}
Возможность изменять сами элементы, а также удалять их из массива
// Editing the tableView (also editing single cells)
override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let editAction = UITableViewRowAction(style: .normal, title: “Edit”, handler: { (action, indexPath) in
let alert = UIAlertController(title: “”, message: “Edit name”, preferredStyle: .alert)
alert.addTextField(configurationHandler: { (textField) in
textField.text = self.myAwesomeArray[indexPath.row]
})
alert.addAction(UIAlertAction(title: “Update”, style: .default, handler: { (updateAction) in
self.myAwesomeArray[indexPath.row] = alert.textFields!.first!.text!
self.tableView.reloadRows(at: [indexPath], with: .fade)
}))
alert.addAction(UIAlertAction(title: “Cancel”, style: .cancel, handler: nil))
self.present(alert, animated: false)
})
let deleteAction = UITableViewRowAction(style: .default, title: “Delete”, handler: { (action, indexPath) in
self.myAwesomeArray.remove(at: indexPath.row)
tableView.reloadData()
})
return [deleteAction, editAction]
}
(может быть) будет пополняться...