как перезагрузить табличное представление при закрытии контроллера представления в Swift 5

avatar
user255112
9 августа 2021 в 06:35
86
1
-3

1

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

Источник
Kudos
9 августа 2021 в 06:47
0

Вы имеете в виду, что работаете с SplitVC?

vadian
9 августа 2021 в 06:48
1

Это зависит от того, как связаны главный и детальный контроллеры. Пожалуйста, покажите свой код.

user255112
9 августа 2021 в 07:05
0

в первом классе VC DataManager { static let shared = DataManager() var firstVC = AdminSupportViewController() }

user255112
9 августа 2021 в 07:06
0

во втором VC DataManager.shared.firstVC.adminTV.reloadData()

vadian
9 августа 2021 в 08:15
0

AdminSupportViewController() создает совершенно новый экземпляр, который не экземпляр в раскадровке. Вам нужен переход или создание экземпляра из раскадровки. И, пожалуйста, не добавляйте информацию в комментарии, редактируйте свой вопрос.

Ответы (1)

avatar
Ahmad Yasser Alshalabi
9 августа 2021 в 11:04
-1

Вы можете использовать обратный вызов закрытия или Центр уведомлений

По Центру уведомлений:

в DetailsViewController

func clickButtonToReloadData(){
    NotificationCenter.default.post(name: Notification.Name("ReloadDataOfTableView"), object: nil, userInfo: [:])
}

в RootViewController:

override func viewDidLoad() {
   super.viewDidLoad() 
   NotificationCenter.default.addObserver(self, selector: #selector(reloadDataOfTableView), name: "ReloadDataOfTableView", object: nil)
}
    
@objc func reloadDataOfTableView(notification : NSNotification){
    self.tableView.reloadData()
}
    
override func viewWillDisappear(_ animated: Bool) {         
    NotificationCenter.default.removeObserver(self, name: "ReloadDataOfTableView", object: nil)   
}