【发布时间】:2016-12-08 05:00:48
【问题描述】:
我在更改 segue 以显示或呈现 ViewController 时遇到了一些问题。 该代码有效
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)
我尝试做一个具有相同目的的函数,但使用 show/present 方法。 看起来是这样的
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 方法中在视图控制器上设置我的对象(在调用提醒Later 方法之后)时,我发现所有对象,如 UIDatePicked 和其他等于 nil。使用 segue 不是这样的。我做错了什么?
【问题讨论】: