• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

swift开发之--代理协议的使用

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

swift代理的使用,和oc版本有区别,区别还是蛮大的,不过和oc一样都是用于反向传值:

实现如下:

1,声明两个类

2,实现流程,viewcontroller页面点击按钮进入firstVC页面,然后在firstVC页面修改值,返回把值传到viewcontroller页面

 

3,具体实现:

a 在firstVC页面声明代理

import UIKit

class FirstViewController: UIViewController {

    @IBOutlet weak var textField: UITextField!
    
    var delegate:EditViewControllerDelegate?
    
    var oldStr:String?
    
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        
        if oldStr != nil {
            textField.text = oldStr
        }
        
    }
    @IBAction func sendAction(_ sender: Any) {
        delegate?.edidStr(controller: self, newInfo: textField.text!)
    }
    
    @IBAction func disMissAction(_ sender: Any) {
        delegate?.editStrDidCancel(controller: self)
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

b 声明代理方法

protocol EditViewControllerDelegate {
    func edidStr(controller:FirstViewController,newInfo:String)
    func editStrDidCancel(controller:FirstViewController)
}

c 代理方法的使用

import UIKit

class ViewController: UIViewController,EditViewControllerDelegate {
    
    @IBOutlet weak var label: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    //页面跳转时
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "EditView"{
            let controller = segue.destination as! FirstViewController
            //设置代理
            controller.delegate = self
            //将值传递给新页面
            controller.oldStr = label.text
        }
    }
    
    func edidStr(controller: FirstViewController, newInfo: String) {
        label.text = newInfo;
        controller.presentingViewController?.dismiss(animated: true, completion: nil)
    }
    
    func editStrDidCancel(controller: FirstViewController) {
        controller.presentingViewController?.dismiss(animated: true, completion: nil)
    }

 

segue的设置:

 

 

 

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
swift语言实战晋级-第9章游戏实战-跑酷熊猫-7-8移动平台的算法 ...发布时间:2022-07-13
下一篇:
swift基础语法(if条件语句)发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap