detailvie Когда ячейка табличного представления выбрана, выполните переход или нажмите EmailDetailViewController
. Передайте выбранный объект NewHomeModel
в EmailDetailViewController
.
class MainViewController: UITableViewController {
var arrayData:[NewHomeModel] = [NewHomeModel]()
//...
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if arrayData.count > 0 && arrayData.count > indexPath.row {
let objemail = arrayData[indexPath.row]
let emailDetailVC = EmailDetailViewController()
emailDetailVC.strThreadId = (objemail.thread_id)!
emailDetailVC.strTitle = (objemail.subject)!
emailDetailVC.homeModel = objemail
emailDetailVC.callBack = { [weak self] objemail in
self?.arrayData[indexPath.row] = objemail
self?.tableView.reloadRows(at: [indexPath], with: .automatic)
}
self.navigationController?.pushViewController(emailDetailVC, animated: true)
}else{
print("array empty")
}
}
}
Настройте EmailDetailViewController
с выбранным NewHomeModel
объектом. Обновите значения объекта в соответствии с вашими потребностями в этом контроллере представления. При возвращении к MainViewController
передайте обновленный объект в предыдущий контроллер представления, используя callBack
замыкание.
class EmailDetailViewController: UIViewController {
var strThreadId:String?
var strTitle :String?
var homeModel: NewHomeModel?
var callBack: ((NewHomeModel)->Void)?
override func viewDidLoad() {
super.viewDidLoad()
homeModel?.unread = 0
//configure views with selectedModel
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
if self.isMovingFromParent, let homeModel = homeModel {
print("Going back to main view controller")
callBack?(homeModel)
}
}
func updateStatus() {
homeModel?.dispute = 1
homeModel?.paid = 1
homeModel?.pending = 0
homeModel?.unread = 0
}
}
В закрытии MainViewController
callBack
замените обновленный объект в массиве источника данных и перезагрузите tableview
.