Привет Я разрабатываю приложение с настраиваемым действием в ячейке tableview.IOS представляет Viewcontroller и передает данные внутри editActionsForRowAt
, когда пользователь провел клетку. Будет выполнено 2 действия: удалить и многое другое. Я хочу больше действий, чтобы представить новый viewController и передать данные объекта новому контроллеру viewController. Как мы это достигаем?
Я попытался с помощью этого
в viewDidLoad
if let split = self.splitViewController {
let controllers = split.viewControllers
self.detailViewController = (controllers[controllers.count-1] as! UINavigationController).topViewController as? DetailViewController
}
и editActionsForRowAt
метод
override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let moreRowAction = UITableViewRowAction(style: .normal, title: "More", handler:{action, indexpath in
if let indexPath = self.tableView.indexPathForSelectedRow {
let object = self.fetchedResultsController.object(at: indexPath)
let controller = self.detailViewController!
controller.detailItem = object
controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem
controller.navigationItem.leftItemsSupplementBackButton = true
self.present(controller, animated: true, completion: nil)
}
// self.performSegue(withIdentifier: "showDetail", sender: self)
});
moreRowAction.backgroundColor = UIColor(red: 0.298, green: 0.851, blue: 0.3922, alpha: 1.0);
let deleteRowAction = UITableViewRowAction(style: .destructive, title: "Delete", handler:{action, indexpath in
self.deleteTapped(indexPath: indexPath as NSIndexPath)
});
return [deleteRowAction, moreRowAction];
}
функция удаления работа, но чем больше действий не работает. И помощь очень ценится! Благодаря
Мои prepareforseuge
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showDetail" {
if let indexPath = self.tableView.indexPathForSelectedRow {
let object = self.fetchedResultsController.object(at: indexPath)
let controller = (segue.destination as! UINavigationController).topViewController as! DetailViewController
controller.detailItem = object
controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem
controller.navigationItem.leftItemsSupplementBackButton = true
}
}
}
кого есть идеал? –
Вы используете раскадровки? то есть. вы хотите переходить к новому контроллеру представления? Или вы используете создание контроллера NIB или программного представления? Я вижу, что у вас есть комментарий, так что я догадываюсь о первом? – Paulw11
Привет, да. У меня есть segue с метки tableviewCell. Пытался использовать выполнить segue, но информация не передается новому Viewcontroller. Информация только передается, когда обычный щелчок (не в редактировании swipe) –