首页 > 其他分享 >Swift基础之Delegate方法的使用

Swift基础之Delegate方法的使用

时间:2022-11-28 17:03:08浏览次数:43  
标签:nameLabel Swift self buttonN UIColor fontSize Delegate delegateFont 方法


本文简单介绍了使用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)
        }

效果显示:

Swift基础之Delegate方法的使用_界面

 

Swift基础之Delegate方法的使用_swift_02

 

Swift基础之Delegate方法的使用_导航_03


标签:nameLabel,Swift,self,buttonN,UIColor,fontSize,Delegate,delegateFont,方法
From: https://blog.51cto.com/u_15894905/5892263

相关文章

  • Swift基础之对FMDB第三方的使用方法
    相信大家都熟悉OC使用FMDB第三方库,进行数据库操作,增、删、改、查,现在我就来利用代码展示一下Swift对此库的使用方法,我是通过Pods添加的第三方库,如果手动添加记得创建桥接文......
  • Swift基础之PickerView(时间)选择器
    代码讲解:(后面有额外代码讲解)首页设计UIPickerView的样式设计:leftArray=["花朵","颜色","形状"];              letarray1=["茉莉","玫瑰","郁金香"......
  • Swift基础之仿资讯类实现频道的长按拖拽/删除/增加
    导读简单用Swift写了一个collectionview的拖拽点击排序效果;拖拽排序是新闻类的App可以说是必有的交互设计,如今日头条,网易新闻等。效果效果主要代码手势长按移动1.......
  • @TestInstance的使用 / @BeforeAll必须为static方法?
    @BeforeAllJunit5会在每个测试方法执行之前创建一个新的测试类实例,如果为每个测试方法都新创建实例,如何让@BeforeAll方法在只执行一侧的情况下,每个方法都可以使用到?在@Be......
  • Swift基础之设计折线坐标图
    最近添加了折线视图的样式,所以在这里用Swift语言重新再使用设计一下首先设置纵坐标的数值是:体重//体重       letweightLabel=UILabel.init(frame:CGRectMake(0......
  • MYSQL-8.0.31 windows免安装 版安装 方法
    1从官方下载绿色安装包 https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.31-winx64.zip2解压到C:\mysql-8.0.31-winx64\建立data目录新建m......
  • MySQL数据库:8、多表查询的方法与思路
    目录一、多表查询思路数据准备1、笛卡尔积1、1.代码实践1、2.笛卡尔积进阶操作2、连表操作2、1.内连接2、2.左连接2、3.右连接2、4.全连接3、子查询3、1.子查询代码实践一......
  • Vue 2.x源码学习:render方法、模板解析和依赖收集
    众所周知,Vue的脚手架项目是通过编写.vue文件来对应vue里组件,然后.vue文件是通过vue-loader来解析的,下面是我学习组件渲染过程和模板解析中的一些笔记。之前的笔记:应用初......
  • Ext Js中Ext.XTemplate使用方法学习
    1:基本知识    XTemplate是Ext.Template扩展的新类,它支持高级功能的模板类,如自动数组输出、条件判断、子模板、基本数学运行、特殊内建的模板变量,直接执行代码和更多的......
  • window qt 路径中包含中文和空格解决方法
    对于window用户,文件名和文件夹经常使用中文来命名,或者文件夹包含了空格,类似“ProgramFile”这样的。针对以上场景,经常发生读写文件或者图片失败的情况。下面提供解决方案......