Swift - executeSegue, вызывающее загрузку ViewController до того, как prepareForSegue передает данные - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь выполнить переход между двумя представлениями таблицы, нажав на ячейку. Однако кажется, что executeSegue загружает представление до того, как prepareForSegue передало данные, и, таким образом, массив остается пустым во втором контроллере представления.

Вот код для моего перехода:

    func prepare(for segue: UIStoryboardSegue, sender: Any?, didSelectRowAt indexPath: IndexPath) {
        if  let vc = segue.destination as? ModuleTableViewController {
            vc.modules = programmes[indexPath.row].modules
        }
    }

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        performSegue(withIdentifier: "ProgrammeToggleVCtoModuleVC", sender: self)
    }

Я бы хотел, чтобы он передавался по данным перед загрузкой представления, так как во втором VC есть проверка, которая вызывает сбой программы, если данные отсутствуют.

Я занимаюсь Swift только последние несколько недель, поэтому извините, если я пропустил какую-либо информацию, с радостью исправлю ее, если вам потребуется дополнительная информация.

1 Ответ

1 голос
/ 10 апреля 2019

Вам нужно подключить segue от самого vc, а не от клетки, и исправить prepare на

func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if  let vc = segue.destination as? ModuleTableViewController {
        vc.modules = programmes[tableView.indexPathForSelectedRow!.row].modules
    }
 }

OR

performSegue(withIdentifier: "ProgrammeToggleVCtoModuleVC", sender: indexPath.row)

с

func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if  let vc = segue.destination as? ModuleTableViewController {
        vc.modules = programmes[sender as! Int].modules
    }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...