Что я пытаюсь сделать:
При нажатии категории в tableViewController 1 соответствующая информация отображается в tableViewController 2
Как я пытаюсь это сделать:
У меня есть свойство var index = 0
в tableViewController 1. index
равно indexpath.row
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
index = indexPath.row
print("Button tapped\(index)")
}
У меня есть prepareForSegue
, который передает index
в tableViewController 2. У tableViewController 2 также есть свойство с именем var index = 0
. Я делаю subjectDetailTableViewController.index
(индекс tableViewController 2) = tableViewController 1 index
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let subjectDetailTableViewController = segue.destination as? SubjectDetailsTableViewController {
// make the indexes equal between view controllers
subjectDetailTableViewController.index = index
}
}
Далее, метод viewWillAppear
tableViewController2 использует новое значение index
, чтобы определить, как загрузить ячейки
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// Determine the subject tapped, then correspond with the correct information
if index == 0 {
loadAnatomy()
} else
if index == 1 {
loadFormulas()
} else
if index == 2 {
loadHemodynamics()
} else
if index == 3 {
loadProcedures()
} else
if index == 4 {
loadRadiology()
}
}
Таким образом, если пользователь касается ячейки с именем ANATOMY (которая является indexPath.row
number 0) в tableViewController1, метод loadAnatomy()
заполнит ячейки tableViewController 2 информацией ANATOMY
T проблема:
Это не всегда работает. Кажется, это на шаг позади. Если я коснусь другой категории, то есть ФОРМУЛ (то есть indexPath.row
номер 1), он загрузит анатомию. Затем, если я вернусь к tableViewController 1 и нажму FORMULAS во второй раз, он будет работать правильно.
Мне показалось, что оператор if находится в неправильном месте, поэтому я переместил его из метода viewDidLoad
tableViewController 2 в метод viewWillAppear
. Но это не исправило это.
Что мне не хватает? Заранее спасибо.