2015-11-30 7 views
1

Я делаю небольшое тестовое приложение и использую шаблон приложения «главная деталь» в Xcode. Я хотел бы иметь возможность отправить массив из подробного представления в главное представление.prepareforsegue() не выполняется (swift/раскадровки)

Я пробовал использовать prepareForSegue(), но проблема в том, что это никогда не называется. Когда я нажимаю кнопку «Назад» (уже там по умолчанию (предварительно сгенерированный Xcode)), он просто не выполняет код.

prepareForSegue() однако работает отлично от мастера до детального вида.

Извините, если ответ на этот вопрос очевиден, но я очень много нового для программирования, так что это немного озадачило меня!

Спасибо!

ответ

2

Переход «назад» через стек навигации не является сегментом, поэтому он не срабатывает prepareForSegue или другие методы, связанные с segue. Как правило, стеки навигации сконструированы таким образом, что главный список не обязательно должен знать, что происходит в подробном представлении.

Если необходимо, вы можете использовать методы viewWillAppear/, чтобы узнать, когда пользователь перемещается назад от детали к главному. Например, если все, что вам нужно сделать, это сделать обновление главного списка, чтобы отразить изменения в детальном детале, вы можете использовать вызов реализации viewWillAppear мастера reloadRowsAtIndexPaths:withRowAnimation: с выбранным маршрутом указателя (который по-прежнему выбран, когда пользователь перешел к деталям Посмотреть). Тогда ваша обычная логика для заполнения ячеек может забрать все изменения, внесенные в объект, представленный этой строкой (и по подробному виду, с которого вы возвращаетесь).

2

Когда вы возвращаетесь, вы набираете навигационный стек, и prepareForSegue не будет вызываться, когда вы переходите от детали к главному виду. Чтобы передать данные с детализации в мастер, вам потребуется развязать Segue. Размотка segue перемещается назад через один или несколько сегментов, чтобы вернуть пользователя в существующий экземпляр контроллера вида. Вы можете использовать UNWIND перетекает осуществить обратный navigation.More деталь можно извлечь отсюда https://developer.apple.com/library/prerelease/ios/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson8.html

0

Надежда это помогает ...

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

    let cell = sender as UITableViewCell 
    if segue.identifier == "xyz" { 
     var tabBarVC: UITabBarController = segue.destinationViewController as UITabBarController 
     var test: LessonsDetailsViewController = tabBarVC.viewControllers?.first as LessonsDetailsViewController 
     var row = self.tableView.indexPathForCell(cell)?.row 
     var dataObj = lessonsNSMObj[row!] 
     test.managedObject = dataObj 
    } 
} 
Смежные вопросы