博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【swift学习笔记】五.使用枚举优雅的管理Segue
阅读量:7061 次
发布时间:2019-06-28

本文共 2050 字,大约阅读时间需要 6 分钟。

在做页面转跳的时候,我们要给Segue命名,如果Segue多了,管理他们就是一个恶梦。我们可以枚举更优雅的管理这些Segue。

  1.我们先来建立一个protocol,他的功能就是让实现类实现一个SegueIdentifier别名,这个SegueIdentifier必需为RawRepresentable类型,在后边我们就会用

protocol SegueHandlerType {    associatedtype SegueIdentifier: RawRepresentable}

  2.我们要对上边的protocol扩展,并且实现protocol必须为UIViewControl,SegueIdentifier的原值要为String类型

这个扩展有两个方法一个是用要实现的别名来调用执行Segue方法performSegueWithIdentifier。另一个方法segueIdentifierForSegue通过Segue的identifier来得到SegueIdentifier.

extension SegueHandlerType where Self: UIViewController, SegueIdentifier.RawValue == String {    func performSegueWithIdentifier(segueIdentifier: SegueIdentifier, sender: AnyObject) {        performSegueWithIdentifier(segueIdentifier.rawValue, sender: sender)    }        func segueIdentifierForSegue(segue: UIStoryboardSegue) -> SegueIdentifier {        guard let identifier = segue.identifier,            segueIdentifier = SegueIdentifier(rawValue: identifier)        else {            fatalError("invalid segue identifier \(segue.identifier)")        }        return segueIdentifier    }}

 

  3.用ViewController实现SegueHandlerType。再用一个枚举来实现SegueIdentifier并且为String,里面有两个case这两个就要我们要打开的新窗体的名称。

下边有两个按钮Action是用SegueIdentifier枚举来打开相应的窗体。

class ViewController: UIViewController, SegueHandlerType {    enum SegueIdentifier: String {        case ShowView1        case ShowView2            }            override func viewDidLoad() {        super.viewDidLoad()        // Do any additional setup after loading the view, typically from a nib.    }    override func didReceiveMemoryWarning() {        super.didReceiveMemoryWarning()        // Dispose of any resources that can be recreated.    }    @IBAction func openView1(sender: AnyObject) {        performSegueWithIdentifier(.ShowView1, sender: self)    }    @IBAction func openView2(sender: AnyObject) {        performSegueWithIdentifier(.ShowView2, sender: self)    }}

 

  4.新建两个新窗体,分别用Segue联接这两个窗体。这两个Segue分别命名为我们的枚举类型的两个值:“ShowView1”  “ShowView2”。再来两个Button连接后台的两个窗体的Action

 

 

 

源代码:

本文转自lpxxn博客园博客,原文链接:http://www.cnblogs.com/li-peng/p/5561149.html,如需转载请自行联系原作者

你可能感兴趣的文章
源代码安装ImageMagick与RMagic
查看>>
翻译过的一些博客文章
查看>>
H5拍照应用开发经历的那些坑儿
查看>>
Git - 批量增删修改操作
查看>>
我的友情链接
查看>>
Linux -- 更改系统时区及时间
查看>>
浅谈reload,restart
查看>>
CSS彻底研究视频教程(全23讲)
查看>>
c标签的<c:choose><c:when>
查看>>
python:nltk最基础的入门.
查看>>
Kebernetes 学习总结(15) K8s多master
查看>>
NO.159 集成禅道和git
查看>>
vagrant 启动时报错failed to create the raw output file
查看>>
第八节 比较操作符
查看>>
Android之场景桌面(一)
查看>>
双ISP双链路接入NAT配置问题探讨
查看>>
PHP写的一个轻量级的DI容器类
查看>>
小米报到
查看>>
怎样设定locale
查看>>
Ubuntu下配置symfony环境
查看>>