Прежде всего вам не нужно использовать NotificationCenter
для этого, потому что вы можете просто достичь этого, передав объект UITabBarController
в контроллер следующего представления, когда вы выбираете любую ячейку в tableView
, как показано ниже:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let vc = self.storyboard?.instantiateViewController(withIdentifier: "DetailViewController") as! DetailViewController
vc.selectedIndex = indexPath.row
vc.tabBar = self.tabBarController
self.present(vc, animated: true, completion: nil)
}
и вам нужно объявить var tabBar: UITabBarController?
в DetailViewController
, в котором будет храниться значение, переданное предыдущим контроллером представления.
Затем, когда вы закрываете контроллер представления, вы можете просто выбрать другой индексUITabBarController
с self.tabBar?.selectedIndex = 1
, и вы можете просто передать значение в первый контроллер представления индекса, например:
@IBAction func close_click(_ sender: Any) {
dismiss(animated: true, completion: {
if let secondTab = self.tabBar?.viewControllers?[1] as? SecondViewController {
secondTab.selectedIndexFromFirstTab = self.selectedIndex
secondTab.tfData = self.userTF.text!
}
self.tabBar?.selectedIndex = 1
})
}
, и вам нужно объявить объекты в SecondViewController
, например:
var selectedIndexFromFirstTab = 0
var tfData = ""
Который будет содержать данные предыдущего представления.
Теперь ваш результат будет выглядеть следующим образом:
Для получения дополнительной информации вы можетесм. ЭТОТ демонстрационный проект.
РЕДАКТИРОВАТЬ:
Итак, из вашего кода я увидел, что вы встроили навигационные контроллеры в tabBar
контроллеры, поэтому вам нужно обновить close_click
метод, как показано ниже:
@IBAction func close_click(_ sender: Any) {
dismiss(animated: true, completion: {
if let navView = self.tabBar?.viewControllers?[1] as? UINavigationController {
if let secondTab = navView.viewControllers[0] as? HomeViewController {
secondTab.selectedIndexFromFirstTab = self.selectedIndex
secondTab.item = self.item
secondTab.tfData = "Sample"
}
}
self.tabBar?.selectedIndex = 1
})
}