swift用协议实现简单的改变界面颜色

来源:互联网 发布:php服务器程序 编辑:程序博客网 时间:2024/06/04 23:34

业余研究了下swift的协议、委托,并制作了简单的demo ,前一个controller页面present下一个controller。在返回的时候改变前一个controller的颜色。适用于初级入门的swift学习爱好者。加深对协议和委托的理解

//  ViewController.swift


import UIKit


class ViewController: UIViewController,ModelViewDelegate{   //在这里引入协议ModelViewDelegate


    overridefunc viewDidLoad() {

        super.viewDidLoad()

        

       self.view.backgroundColor=UIColor.blueColor()

        let button=UIButton(frame:CGRectMake(100,100,100,100))

        

        button.setTitle("下一页面", forState:UIControlState.Normal)

        button.addTarget(self, action:"present:", forControlEvents:UIControlEvents.TouchUpInside)

        self.view.addSubview(button);

               // Do any additi"onal setup after loading the view, typically from a nib.

    }

    func setBackColor() {   //在这里实现协议方法

        self.view.backgroundColor=UIColor.redColor()

    }

    func present(sender:UIButton!){

        let model=ModelViewController()

        model.delegate=self;  //设置委托

        self.presentViewController(model, animated:true, completion:nil)

    }

    

    overridefunc didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }



}


//  ModelViewController.swift

import UIKit


protocol ModelViewDelegate{

    func setBackColor();

}

class ModelViewController:UIViewController {

 

    var delegate :ModelViewDelegate?  //设置委托

    overridefunc viewDidLoad() {

        super.viewDidLoad()

        self.view.backgroundColor=UIColor.grayColor()

        let button=UIButton(frame:CGRectMake(100,100,100,100))

        button.setTitle("返回", forState:UIControlState.Normal)

        button.addTarget(self, action:"backTo:", forControlEvents:UIControlEvents.TouchUpInside)

        self.view.addSubview(button);

        // Do any additional setup after loading the view.

    }

   

        func backTo(sender:AnyObject) {

        self.delegate!.setBackColor()

        self.dismissViewControllerAnimated(true,completion:nil)

       

    }


    overridefunc didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }



0 0
原创粉丝点击