Swift: переменная получает значение, назначенное в неправильном порядке - PullRequest
0 голосов
/ 10 марта 2019

Я, вероятно, здесь упускаю что-то базовое, но у меня есть два 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])"
    }

}

Есть идеи, что я делаю не так?

1 Ответ

1 голос
/ 10 марта 2019

Вам нужно подключить переход от самого VC, а не от клетки, а использовать внутри didSelectRowAt

self.performSegue(withIdentifer:"SegueName",sender:indexPath.row)

func prepare(for segue: UIStoryboardSegue,sender: Any?)  {  
  if segue.identider == "SegueName"  {
     let des = segue.destination as! ExampleVC
     des.selectedCell = sender as! Int
  }
}
...