Блин:grin:…одно делаешь, другое ломаешь. Но элементы то должны быть. Да и в видео также сегвей добавлен. Что у меня особенного?
Не работает segue
да:grin:. Спасибо. Пойду решать новую проблему.
Если закомментить метод prepeareForSegue , то работает.
у меня та же проблема, при переходе на другой экран не отображается картинка, тоже все делал по видео, когда ставлю в коде скобки 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]
убираю, билд идет, но при переходе не отображается картинки…
Посмотрите пожалуйста момент видео на 10:17. Обратите внимание на строку выделенную зеленым цветом.
Я думаю, что весь вопрос в ней.
да упустил! но теперь как и на видео выдает другую ошибку при открытии, хотя билд сс, Загрузка…
А Вы сами попробуйте ответить на вопрос чему у Вас равен restaurantImage
Я думаю, что не сможете, потому что он у Вас прописан парой строк выше и в момент обращения к нему равен nil.
блин, что-то я жестко туплю, так как нужно сделать? простите за назойливость, я просто еще полный ноль в этом )))
Да ничего сложного, просто сначала Вам нужно присвоить значение в restaurantImage, а затем уже restaurantImageView.image = restaurantImage
прошу прощения, там же присвоено значение типа String!, что еще нужно и куда вписать? ))
Смотрите, когда вы вписываете значение, то должно быть что-то вроде “Swiftbook.jpg”, а у Вас просто указан тип с восклицательным знаком, что свидетельствует о том, что когда Вы запросите значение у этой переменной, она уже будет иметь какое-то значение типа String.
Наступил момент, когда нужно вытянуть значение помещенное в restaurantImage, но его там нет!
Вот он и ругается на Вас.
То есть сейчас, Вам нужно поместить какое-то имя изображение в restaurantImage, чтобы потом получилось реальное изображение через:
UIImage(named: restaurantImage)
А вот когда Вы говорите, что уже присвоено значение типа String, то Вы должны мочь показать какое
Попробуйте скачать проект для Swift 2.0 и сравнить Ваш код и мой код.
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()
так? но у меня тогда только одна картинка на все ячейки при переходе открывается ;(
Проверьте свой метод prepateForSegue, по-моему именно там мы назначаем картинку нашему делегату.
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]
}
}
}
все вроде как в видео
Вообщем задача тривиальная вызвать segue по идентификатору из viewDidLoad(). Как оказалось задача имела подвох. Может кому на заметку пригодиться.
DispatchQueue.main.async(execute: {
self.performSegue(withIdentifier: "ProviderTableViewSegueId", sender: self)
})