您的位置:首页 > 移动开发 > Swift

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

2015-03-26 18:03 567 查看
业余研究了下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.
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息