当前位置:  开发笔记 > 编程语言 > 正文

是否有可能通过快速通过segue枚举

如何解决《是否有可能通过快速通过segue枚举》经验,为你挑选了1个好方法。

我在第一个带有枚举的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的变量?



1> Luca Angelet..:

您可以在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
    }
}

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有