Я, вероятно, здесь упускаю что-то базовое, но у меня есть два ViewControllers
с именем ListController
(начиная с VC) и ExamplesController
и переменная с именем selectedCell
, которая объявлена в ListController
, затем ее значение изменяется в ListController
с помощью функции tableView
didSelectRowAt indexPath
в зависимости от строки, на которую пользователь нажимает Когда пользователь нажимает на ячейку, будет отображаться ExamplesController
(через segue в IB), но значение selectedCell
не изменится, пока я не вернусь к ListController
. Таким образом, порядок, в котором выполняются вещи сейчас:
selectedCell
инициализируется со значением 0
пользователь нажимает на ячейку (скажем, индекс 3)
ExamplesController
представлен с заголовком 0
пользователь возвращается к ListController
selectedCell
получает значение 3
Вот упрощенная версия кода.
var selectedCell = 0
class ListController: UIViewController, UITableViewDelegate, UITableViewDataSource{
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
selectedCell = indexPath.row
print("Tapped on \(selectedCell)")
}
}
class ExamplesController: UIViewController{
@IBOutlet weak var chapterTitle: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
chapterTitle.text = "\(chapterTitles[selectedCell])"
}
}
Есть идеи, что я делаю не так?