Вопрос по WebView


#1

Доброго времени суток! Я новичок и у меня опыт программирования - пару курсов Ивана:) Нужна помощь!
Создаю приложение по курсу №2, но свое. Смысл в том, что вместо ресторанов у меня фильмы.
При выборе фильма происходит переход на другой ViewController. В нем есть 4 ContainerView. Один из них с WebView. В нем должен показываться трейлер фильма. Мне нужно, чтобы при выборе фильма открывался его трейлер, а у меня почему то везде открывается самый 1й трейлер из массива. Помогите, пожалуйста, разобраться где у меня ошибка и как ее исправить!


#2

Что за массив? Массив в студию! :slight_smile: покажите его. А вообще, к порядковым данным из массива в таблице нужно стучаться через indexPath.


#3

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

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
}

то, при выборе любой ячейки отображается самый первый трейлер :С


#4

Вынесите структуру в отдельный файл и обращайтесь к ней из любого контроллера. Допустим, создали её экземпляр в первом контроллере. Данные из первого контроллера можно передать в последующие следующим образом: 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)
  }
}