Как я могу передать данные через editActionsForRowAt в Viewcontroller? - PullRequest
0 голосов
/ 21 декабря 2018

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

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {

    let delete = UITableViewRowAction(style: .destructive, title: "Delete") { (action, indexPath) in

        let eventDB = self.events[indexPath.row]
        self.events.remove(at: indexPath.row)
        self.tableViewHome.deleteRows(at: [indexPath], with: .automatic)
        self.removeFromDB(event: eventDB)
        print(self.tableViewHome)
    }

    let edit = UITableViewRowAction(style: .default, title: "Edit") { (action, indexPath) in

        let EC = EditEventController()
        EC.dateTextfield.text = self.events[indexPath.row].dateTitle
        EC.titleTextfield.text = self.events[indexPath.row].eventTitle
        EC.repeatTextfield.text = self.events[indexPath.row].repeatTime

        self.navigationController?.pushViewController(EC, animated: true)

        //self.performSegue(withIdentifier: "goToEditEvent", sender: self)

    }

    edit.backgroundColor = UIColor.lightGray

    return [delete, edit]

}

1 Ответ

0 голосов
/ 21 декабря 2018

IBOutlets в вашем EditEventController равны нулю до тех пор, пока вы на самом деле не выполните pushViewController, поэтому вы видите, что они не устанавливаются.

Что я бы порекомендовал сделать, это добавить event(или originalEvent) для вашего EditEventController, а затем в вашей функции EditEventController viewWillAppear затем установите текстовые свойства торговых точек.

То есть в вашем EditEventController:

var originalEvent : Event? // or whatever you've named this structure/object

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    guard let originalEvent = originalEvent else {
        return
    }

    self.dateTextfield.text = originalEvent.dateTitle
    self.titleTextfield.text = originalEvent.eventTitle
    self.repeatTextfield.text = originalEvent.repeatTime
}

Затем в вашем UITableViewRowAction:

let edit = UITableViewRowAction(style: .default, title: "Edit") { (action, indexPath) in

    let eec = EditEventController()
    eec.originalEvent = self.events[indexPath.row]
    self.navigationController?.pushViewController(eec, animated: true)
}

Кроме того, обратите внимание, что я сделал экземпляр EditEventController строчными? Начинать со строчной буквы - это стандартный способ присвоения имени переменной в Swift .

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...