2016-12-07 5 views
0

У меня есть некоторые проблемы при изменении segues, чтобы показать или представить ViewController. Этот код работаетОт segues to show/present view controller

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    let noteDetailViewController = segue.destination as! NoteViewController 
    var selectedNote: Note? 

    if segue.identifier == "ShowDetail" { 
     if let selectedNoteCell = sender as? NoteTableViewCell { 
      let indexPath = tableView.indexPath(for: selectedNoteCell)! 
      selectedIndexPath = indexPath 
      if !searchIsEmpty() { 
       selectedNote = filteredNotes[indexPath.row] 
      } else { 
       selectedNote = notes[indexPath.row] 
      } 
     } 
    } else if segue.identifier == "RemindLater" { 
     if let note = notificationNote?.copy() as? Note { 
      selectedNote = note 
     } 
    } 
    noteDetailViewController.note = selectedNote?.copy() as? Note 
    noteDetailViewController.oldNote = selectedNote?.copy() as? Note 
    noteDetailViewController.isFiltered = isFiltered 
    resultSearchController.searchBar.isHidden = true 
} 

Она вызывается

vc.performSegue(withIdentifier: "RemindLater", sender: self) 

Я пытался сделать FUNC с той же целью, но для использования шоу/данного способа. Похоже, что этот

func remindLater() { 
    if let note = notificationNote?.copy() as? Note { 
     noteToEditing = note 
     noteViewController.transitioningDelegate = self 
     noteViewController.modalPresentationStyle = UIModalPresentationStyle.fullScreen 
     noteViewController.modalTransitionStyle = UIModalTransitionStyle.coverVertical 
     noteViewController.note = noteToEditing?.copy() as? Note 
     noteViewController.oldNote = noteToEditing?.copy() as? Note 
     noteViewController.isFiltered = isFiltered 
     resultSearchController.searchBar.isHidden = true 
     present(noteViewController, animated: true, completion: nil) 
     //show(noteViewController, sender: self) 
    } 
} 

Но это не работает. Когда я устанавливаю свои объекты в контроллере просмотра (после вызова метода напоминания) в методе viewDidLoad, я обнаружил все объекты, такие как UIDatePicked, и другие, равные нулю. Это не похоже на использование segue. Что я делаю не так?

ответ

0

Из того, что я могу сказать о том, что вы пытаетесь сделать, похоже, вам нужно получить ссылку на контроллер в процессе подготовки (для segue: UIStoryboardSegue, отправитель: Any?), Создав его, а затем установив свойства напрямую.

я мог бы покинуть базу, но я говорю что-то вроде:

// In a storyboard-based application, you will often want to do a little preparation before navigation 
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    if "RemindLater" == segue.identifier { 

     let controller = segue.destination as! NewViewController 
     controller.note = noteToEditing 
     ... 

    } 

} 
+0

Есть ли способ сделать это без использования метода подготовки к SEGUE? – L1GhTUA

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