Я делаю быстрый проект, дизайн пользовательского интерфейса уже представлен, как показано на следующем рисунке.
ПРОБЛЕМА Iнужно передать данные двунаправленно между контроллером просмотра профиля и контроллером домашнего просмотра.
Я уже пробовал: Внутри контроллера домашнего просмотра:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
NotificationCenter.default.addObserver(self, selector: #selector(selectMypost), name: NSNotification.Name("com.rjt.Chao.postsCliked"), object: nil)
}
@objc func selectMypost(){
isFiltering = true
if let currentUserId = Auth.auth().currentUser?.uid {
filteredPosts = posts.filter{
$0.userID == currentUserId
}
}
tblview.reloadData()
}
и
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
guard let curUserId = Auth.auth().currentUser?.uid else {return false}
let count = posts.filter{$0.userID == curUserId}.count
NotificationCenter.default.post(name: NSNotification.Name("com.rjt.Chao.mypostnumbercount"), object: self, userInfo: ["currentUserPostCount":count])
print(viewController)
return true
}
Внутри контроллера представления профиля:
@objc func changeCounts(notification:Notification){
guard let count = notification.userInfo!["currentUserPostCount"] else {return}
posts.setTitle(String(count as! Int), for: .normal)
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
NotificationCenter.default.addObserver(self, selector: #selector(changeCounts), name: NSNotification.Name("com.rjt.Chao.mypostnumbercount"), object: nil)
}
Но когда я впервые щелкнул по вкладке «Профиль», функция выбора не была вызвана, заголовок UIButton не изменился.
Угадай: кажется, что наблюдатель должен быть добавлен до уведомления.Я прав?
Как это исправить?