我在第一个带有枚举的ViewController中有这个prepareForSegue
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { enum TypeOfSegue { case Edit, Create } if let DestViewController: DetailViewController = segue.destinationViewController as? DetailViewController where segue.identifier == "EditItem" { let edit = TypeOfSegue.Edit } if let DestViewController: DetailViewController = segue.destinationViewController as? DetailViewController where segue.identifier == "CreateNewItem" { let create = TypeOfSegue.Create } }
我想将常量编辑或创建传递给我的DetailViewController.如果可能的话,我怎样才能在DetailViewController中保存TypeOfSegue的变量?
您可以在DetailViewController中定义mode属性
class DetailViewController:UIViewController { var mode: TypeOfSegue! }
接下来你可以填充它
enum TypeOfSegue { case Edit, Create } class ListViewController:UIViewController { override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if let destViewController: DetailViewController = segue.destinationViewController as? DetailViewController where segue.identifier == "EditItem" { destViewController.mode = .Edit } if let destViewController: DetailViewController = segue.destinationViewController as? DetailViewController where segue.identifier == "CreateNewItem" { destViewController.mode = .Create } } }
您也可以通过prepareForSegue
这种方式实现该方法
enum TypeOfSegue: String, CustomStringConvertible { case Edit = "EditItem", Create = "CreateNewItem" var description: String { return self.rawValue } } class ListViewController:UIViewController { override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { guard let destViewController = segue.destinationViewController as? DetailViewController, identifier = segue.identifier, segueType = TypeOfSegue(rawValue: identifier) else { fatalError("Wrong segue") } destViewController.mode = segueType } }