2016-06-16 3 views
0

Я пытаюсь передать некоторые данные из выбранной строки через segue в другой диспетчер представлений, но я не могу. Я попробовал почти все, но я всегда получаю:Передача данных через segue и sqlite

2016-06-16 18:41:20.069 Wine Dictionary[3282:55647] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<Wine_Dictionary.DetailUI: 0x7f8a1ae2fa60>) has no segue with identifier 'SegueToDetailUI'' 

Я уже попробовал метод изменения, изменения идентификатора и т.д.

Вот скриншот кода: http://prntscr.com/bh6e6l Вот скриншот раскадровки и Segue идентификатор: http://prntscr.com/bh6f6q

ответ

0

удалить свой код в didSelectRowAtIndexPath и добавьте

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { 
    if (segue.identifier == "SegueToDetailUI") { 
    let selectedInfo = self.NAME?[indexPath.row] 
    let indexPath = tableView.indexPathForSelectedRow 
    let destinationVC = segue.destinationViewController as! DetailUI 
    destinationVC.programVar = selectedInfo! 
    } 
} 

предполагая, я все правильно пишется (если не просто исправить мое правописание)

+0

Таким образом, он работает, но не передает требуемые данные. Что мне делать с этим? – Filip

+0

Что значит, что он не передает требуемые данные? Вы так ошибаетесь? – rigdonmr

+0

Нет, в DetailUI (который является вторым диспетчером представлений) я не получаю информацию из нажатой ячейки в предыдущем диспетчере представлений. Моя цель - передать имя щелкнутой ячейки, и таким образом он просто переходит к другому VC, не передавая его. – Filip

0

Попробуйте удалить свой SEGUE и воссоздать его ..

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if (segue.identifier == "SegueToDetailUI") 
    { 
    if let rowselect = tableView!.indexPathForSelectedRow   
     { 
      let selectedInfo =self.NAME?[rowselect] 
      let moveVC:DetailUI = segue.destinationViewController as! DetailUI 
     moveVC.programVar = selectedInfo! 
     } 
    } 
} 
+0

Все еще не работает. Он просто выбирает строку и ничего не делает. http://prntscr.com/bh7uox – Filip

+0

ли вы используете данные, полученные в контроллере представления DetailUI? если возможно post ur DetailUI просмотреть код класса контроллера. – Pavani

+0

Это не имеет значения, но я делаю. Он должен все же перейти к DetailUI. http://prntscr.com/bh8e5a – Filip

0

Поскольку ваш переход идет от MainUI к DetailUI, performSegueWithIdentifier ("SegueToDetailUI") должен быть запущен из MainUI, контроллера представления в начале segue.

Вызов этого метода будет создавать экземпляр контроллера представления DetailUI и нажимать его на экран.

Конфигурация вновь созданного контроллера представления DetailUI происходит в методе MainUI.prepareForSegue. Вот где вы будете предоставлять свойство programVar.

Запомните: при использовании раскадровки вы никогда не станете никогда не создавать экземпляры контроллеров просмотра самостоятельно (let vc = MyViewController()). Вместо этого вы всегда будете использовать один из методов NSStoryboard.instantiateViewController ... или NSViewController.performSegue (...).

+0

Он запускается из MainUI. – Filip

+0

Я имел в виду экземпляр mainUI: mainUI.perform ... и not detailUI.perform ... –

+0

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

Смежные вопросы