Swift基础之Delegate方法的使用

本文简单介绍了使用Delegate方法的进行值的传递,改变上一个界面的字体大小和颜色

首先创建一个导航视图:

let viewC = ViewController();
        let navigationC = UINavigationController.init(rootViewController: viewC);
        window?.rootViewController = navigationC;

在ViewController视图中创建跳转按钮和显示字体的UILabel

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        self.title = "首页"
        self.view.backgroundColor = UIColor.lightGrayColor();
        
        //添加按钮
        let buttonN = UIButton.init(frame: CGRectMake(100, 80, 150, 50));
        buttonN.setTitle("进入下一层", forState: .Normal);
        buttonN.setTitleColor(UIColor.blueColor(), forState: .Normal);
        buttonN.addTarget(self, action: #selector(buttonNClick), forControlEvents: .TouchUpInside);
        self.view.addSubview(buttonN);
        
        //显示字体
        nameLabel = UILabel.init(frame: CGRectMake(50, 200, 200, 50));
        nameLabel.text = "111111111";
        nameLabel.font = UIFont.systemFontOfSize(20);
        nameLabel.textColor = UIColor.redColor();
        nameLabel.layer.borderWidth = 1;
        self.view.addSubview(nameLabel);
        
    }
    //按钮的点击方法
    func buttonNClick(btn:UIButton) {
        let oneVC = OneViewController();
        
        //从前往后传值,这里跟OC中的在 .h 文件中利用@property进行描述的变量类似效果
        oneVC.nameStr = "你好,明天";
        
        //设置协议delegate
        oneVC.delegateFont = self;
        self.navigationController?.pushViewController(oneVC, animated: true);
    }
    
    //实现代理的方法
    func fontSizeDidChange(controllerR: OneViewController, fontSize: Int, fontColor: UIColor) {
        nameLabel.font = UIFont.systemFontOfSize(CGFloat(fontSize));
        nameLabel.textColor = fontColor;
    }

在OneViewController文件中创建代理方法,并在上一个界面实现方法:


//定义代理对象
    var delegateFont:FontSizeChangeDelegate?;//定义一个协议,实现可以从前往后传值
protocol FontSizeChangeDelegate:NSObjectProtocol{
    //定义一个delegate函数
    //参数1:代理创建时所在的Controller,参数2:字体大小,参数3:字体颜色
    func fontSizeDidChange(controllerR:OneViewController ,fontSize:Int,fontColor:UIColor);
    
    //可以添加更多的协议方法......
}

//定义代理对象
    var delegateFont:FontSizeChangeDelegate?;

//使用代理方法
        if (delegateFont != nil) {
            //调用协议方法
            delegateFont?.fontSizeDidChange(self, fontSize: fontSize, fontColor: colorR)
        }

效果显示:

   

注意:上面是部分代码显示,详细使用请下载Demo:http://download.csdn.net/detail/hbblzjy/9597865

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hbblzjy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值