быстрая ошибка в табличном предложении - PullRequest
0 голосов
/ 02 июня 2019

Я пытаюсь создать табличное представление, в котором пользователь может щелкнуть ячейки, чтобы ячейки открывали новый ViewController, который устанавливает заголовок панели навигации для метки ячейки, по которой щелкнули.
Это на самом деле не работает для меня, потому что, когда ящелкните ячейку, чтобы открыть представление, в котором было значение ранее выбранной ячейки (а не значение текущей ячейки), а затем снова открывается новое представление, в котором заголовок является значением текущей ячейки.
Я загрузил контроллеры представления в репозиторий GitHub:https://github.com/SiposPtr/stackoverflow

var selectedValue: String?
var numberOfFileToLoad: Int = 1
let cellak = [
    "Első",
    "Második",
    "Harmadik",
    "Negyedik",
    "Ötödik",
    "Hatodik",
    "Hetedik",
    "Nyolcadik",
    "Kilencedik"
]
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    return cellak.count
}


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath)
    cell.textLabel?.text = cellak[indexPath.row]
    // Configure the cell...
    return cell
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    selectedValue = cellak[indexPath.row]
    numberOfFileToLoad = indexPath.row + 1
    performSegue(withIdentifier: "gotoSentences", sender: nil)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "gotoSentences"{
        let nextViewController = segue.destination as! ButtonEditViewController
        nextViewController.title = selectedValue
        nextViewController.numberOfFileToLoad = numberOfFileToLoad
    }
}

enter image description here

1 Ответ

1 голос
/ 02 июня 2019

Кажется, segue выполняется дважды.Если у вас есть соединение segue от ячейки табличного представления к следующему контроллеру представления, segue выполняется сразу после выбора ячейки, и после этого будет вызван метод didSelectRowAt.

Вы можете получитьвыбранную строку в методе prepare for segue и передайте выбранные данные в следующий контроллер представления.

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "gotoSentences"{
        if let nextViewController = segue.destination as? ButtonEditViewController,
            let indexPath = tableView.indexPathForSelectedRow {
                nextViewController.title = cellak[indexPath.row]
                nextViewController.numberOfFileToLoad = indexPath.row + 1
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...