Не работает segue


#21

Блин:grin:…одно делаешь, другое ломаешь. Но элементы то должны быть. Да и в видео также сегвей добавлен. Что у меня особенного?


#22

Да, бывает :slight_smile:
В итоге у Вас сработало что нужно?


#23

да:grin:. Спасибо. Пойду решать новую проблему.
Если закомментить метод prepeareForSegue , то работает.


#24

у меня та же проблема, при переходе на другой экран не отображается картинка, тоже все делал по видео, когда ставлю в коде скобки if let indexPath = self.tableView.indexPathForSelectedRow () - то выдает ошибки две

   override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "showDetailsSegue" {
            if let indexPath = self.tableView.indexPathForSelectedRow () {
            let destinationVC = segue.destinationViewController as! DetailsViewController
                destinationVC.restaurantImage = self.restaurantImage[indexPath.row]

убираю, билд идет, но при переходе не отображается картинки…

Загрузка…


#25

Посмотрите пожалуйста момент видео на 10:17. Обратите внимание на строку выделенную зеленым цветом.
Я думаю, что весь вопрос в ней.


#26

да упустил! но теперь как и на видео выдает другую ошибку при открытии, хотя билд сс, Загрузка…


#27

Если как на видео, то поправим :slight_smile:


#28

так а что можно сделать? надо же приступать к новому уроку, а он завязан на этом ;)))


#29

Я не вижу в чем ошибка, добавьте пожалуйста скриншот.


#30

добавил, не мог загрузиться:)


#31

А Вы сами попробуйте ответить на вопрос чему у Вас равен restaurantImage :slight_smile:

Я думаю, что не сможете, потому что он у Вас прописан парой строк выше и в момент обращения к нему равен nil.


#33

блин, что-то я жестко туплю, так как нужно сделать? простите за назойливость, я просто еще полный ноль в этом )))


#34

Да ничего сложного, просто сначала Вам нужно присвоить значение в restaurantImage, а затем уже restaurantImageView.image = restaurantImage


#35

прошу прощения, там же присвоено значение типа String!, что еще нужно и куда вписать? ))


#36

Смотрите, когда вы вписываете значение, то должно быть что-то вроде “Swiftbook.jpg”, а у Вас просто указан тип с восклицательным знаком, что свидетельствует о том, что когда Вы запросите значение у этой переменной, она уже будет иметь какое-то значение типа String.

Наступил момент, когда нужно вытянуть значение помещенное в restaurantImage, но его там нет!

Вот он и ругается на Вас.

То есть сейчас, Вам нужно поместить какое-то имя изображение в restaurantImage, чтобы потом получилось реальное изображение через:

UIImage(named: restaurantImage)

А вот когда Вы говорите, что уже присвоено значение типа String, то Вы должны мочь показать какое :slight_smile:

Попробуйте скачать проект для Swift 2.0 и сравнить Ваш код и мой код.


#37

import UIKit

class DetailsViewController: UIViewController {

    @IBOutlet var restaurantImageView: UIImageView!
    var restaurantImage = "1.jpg"
    
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.restaurantImageView.image = UIImage(named:restaurantImage)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()

так? но у меня тогда только одна картинка на все ячейки при переходе открывается ;(


#38

Проверьте свой метод prepateForSegue, по-моему именно там мы назначаем картинку нашему делегату.


#39
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "showDetailsSegue" {
        if let indexPath = self.tableView.indexPathForSelectedRow {
        let destinationVC = segue.destinationViewController as! DetailsViewController
            destinationVC.restaurantImage = self.restaurantImages[indexPath.row]
            
        }
    }
}

все вроде как в видео :slight_smile:


#40

Вообщем задача тривиальная вызвать segue по идентификатору из viewDidLoad(). Как оказалось задача имела подвох. Может кому на заметку пригодиться.

DispatchQueue.main.async(execute: {
                self.performSegue(withIdentifier: "ProviderTableViewSegueId", sender: self)
            })

Закрыл тему #41