Is it possible to list through segue in swift

I have this prepareForSegue in my first ViewController with an listing in it

    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

    }
}

I want to pass constants for editing or creation to my DetailViewController. If possible, how can I do this and under which variable will the TypeOfSegue in DetailViewController be stored?

+4
source share
1 answer

You can define the mode property in your DetailViewController

class DetailViewController:UIViewController {    
    var mode: TypeOfSegue!
}

Then you can fill it

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
        }
    }
}

Update

You can also implement a method 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
    }
}
+6
source

Source: https://habr.com/ru/post/1619069/


All Articles