Как я могу получить доступ к пути индекса UITableView в моей функции подготовки к переходу? - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь получить доступ к переменной stringSchoolID из функции tableView в функции prepare. Это динамическая переменная c, которая изменяется при щелчке по другому элементу строки в TableView. Массивы заполняются Firebase, поэтому я удалил эту часть кода - вы можете предположить, что они заполнены, как я уже тестировал.

В качестве решения я попытался объявить переменную вне функций, но это не не работает, целевой объект просто получает пустую строку (как было объявлено). Вся помощь приветствуется!

class SearchViewController: UIViewController {

    @IBOutlet weak var tableViewSearch: UITableView!

    struct School {
        let schoolID: String
        let schoolName: String
        let schoolTown: String
        let schoolCountry: String
    }

    var schoolArray: [School] = []

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }    
}

extension SearchViewController: UITableViewDataSource, UITableViewDelegate {

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        performSegue(withIdentifier: "SearchSelectionSegue", sender: self)
        var stringSchoolID: String = self.schoolArray[indexPath.row].schoolID
        print(stringSchoolID)
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let searchSelectionSegue = segue.destination as! SchoolProfileViewController
        searchSelectionSegue.stringSegue = 
    }
}

Ответы [ 2 ]

1 голос
/ 16 апреля 2020

Вы можете использовать tableView.indexPathForSelectedRow?.row, чтобы получить индекс выбранной ячейки.

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let searchSelectionSegue = segue.destination as! SchoolProfileViewController
        guard let index: Int = tableView.indexPathForSelectedRow?.row else { return }
        searchSelectionSegue.stringSegue = schoolArray[index].schoolID
    }
1 голос
/ 16 апреля 2020

Вы можете сделать следующее:

let stringSchoolID = self.schoolArray[indexPath.row].schoolID    
performSegue(withIdentifier: "SearchSelectionSegue", sender: stringSchoolID)

И в:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let searchSelectionSegue = segue.destination as! SchoolProfileViewController
    searchSelectionSegue.stringSegue = sender as? String
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...