Доброго времени суток! Я новичок и у меня опыт программирования - пару курсов Ивана:) Нужна помощь!
Создаю приложение по курсу №2, но свое. Смысл в том, что вместо ресторанов у меня фильмы.
При выборе фильма происходит переход на другой ViewController. В нем есть 4 ContainerView. Один из них с WebView. В нем должен показываться трейлер фильма. Мне нужно, чтобы при выборе фильма открывался его трейлер, а у меня почему то везде открывается самый 1й трейлер из массива. Помогите, пожалуйста, разобраться где у меня ошибка и как ее исправить!
Вопрос по WebView
Что за массив? Массив в студию! покажите его. А вообще, к порядковым данным из массива в таблице нужно стучаться через indexPath
.
Наверно правильней сказать не массив, а структура. Я полностью массив не буду сюда писать, потому что он огромный)
struct Film {
let name: String
let image: String
let time: String
let producer: String
let budget: String
let dues: String
let phase: String
let data: String
let story: String
let video: String
}
Вот сама структура. Я хочу чтобы она находилась в самом первом ViewController, но не могу передать данные из первого в третий ViewController.
А если эту структуру скопировать сразу в третий и обратиться вот так:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "trailerCell", for: indexPath) as! TrailerViewCell
cell.trailerWebView.loadRequest(URLRequest(url: URL(string: films[indexPath.row].video)!))
return cell
}
то, при выборе любой ячейки отображается самый первый трейлер :С
Вынесите структуру в отдельный файл и обращайтесь к ней из любого контроллера. Допустим, создали её экземпляр в первом контроллере. Данные из первого контроллера можно передать в последующие следующим образом: https://www.raywenderlich.com/160519/storyboards-tutorial-ios-10-getting-started-part-2
в статье подробно описаны варианты, обратите внимание на метод:
// MARK: - Navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "SavePlayerDetail",
let playerName = nameTextField.text {
player = Player(name: playerName, game: "Chess", rating: 1)
}
}