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

[Swift实际操作]八、实用进阶-(2)Swift语言中的三种消息传递模式 ...

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

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

本文将通过响应按钮的点击事件,来演示Target-Action消息传递机制,
该机制主要用于响应用户的界面操作。
打开创建的空白项目。
然后在左侧的项目导航区,打开视图控制器的代码文件:ViewController.swift

第一种消息传递模式:

 1 import UIKit
 2 class ViewController: UIViewController{
 3 
 4   override func viewDidLoad(){
 5     super.viewDidLoad()
 6 //Do any additional setup after loading the view, typically from a nib.
 7 //现在开始编写代码创建一个简单的按钮控件
 8 //定义一个整形常量,作为按钮的宽度,该宽度的值为当前屏幕的宽度和40的差
 9     let wid = Int(self.view.frame,size.width - 40)
10 //然后创建一个指定区域的按钮控件,它的坐标位于(20,100),高度为40,宽度为常量的值
11     let greetingButton = UIButton(frame:CGRect(x: 20,y: 100,width: wid,height: 40))
12 //设置按钮在正常状态下的标题文字
13     greetingButton.setTitle("Greeting",for: .normal)
14 //设置按钮的背景按钮为橙色
15     greetingButton.backgroundColor = .orange
16 //使用Target-Action方式,给按钮对象绑定点击事件。
17 //响应该事件的方法为ViewController类中的buttonTapped方法,
18 //将在下面代码中完成该方法的编写
19 //如果方法位于当前的类中,可以省略方法名称前方的类名action:#selector(buttonTapped),
20     greetingButton.addTarget(self,
21                            action:#selector(ViewControler.buttonTapped),
22                               for: .touchUpInside)
23 //将按钮对象添加到当前视图控制器的根视图。
24     self.view.addSubview(greetingButton)
25   }
26 
27 //添加一个方法,作为Target-Action中的Action,用来响应按钮的点击事件。
28    @objc func buttonTapped()
29    {
30       print("strengthen")
31     }
32      
33    override func didReceiveMemoryWarning(){
34      super.didReceiveMemoryWarning()
35      //Dispose of any resources that can be recreated.
36 
37    }
38 }

第二种消息传递模式:

 1 import UIKit
 2 class ViewController: UIViewController{
 3 
 4   override func viewDidLoad(){
 5     super.viewDidLoad()
 6 //Do any additional setup after loading the view, typically from a nib.
 7 //现在开始编写代码创建一个简单的按钮控件
 8 //定义一个整形常量,作为按钮的宽度,该宽度的值为当前屏幕的宽度和40的差
 9     let wid = Int(self.view.frame,size.width - 40)
10 //然后创建一个指定区域的按钮控件,它的坐标位于(20,100),高度为40,宽度为常量的值
11     let greetingButton = UIButton(frame:CGRect(x: 20,y: 100,width: wid,height: 40))
12 //设置按钮在正常状态下的标题文字
13     greetingButton.setTitle("Greeting",for: .normal)
14 //设置按钮的背景按钮为橙色
15     greetingButton.backgroundColor = .orange
16 //设置按钮的标识符为1,通过该标识符剋获得该按钮的控件
17     greetingButton.tag = 1
18 //给按钮绑定点击事件,
19 //注意方法名称的右侧使用了(_:),小括号表示该方法拥有参数,下划线表示隐藏外部参数名。
20     greetingButton.addTarget(self,
21                            action:#selector(buttonTappedFor(_:)),
22                               for: .touchUpInside)
23 //将按钮对象添加到当前视图控制器的根视图。
24     self.view.addSubview(greetingButton)   
25   }
26 
27 //添加一个方法,用来响应按钮的点击事件。
28    @objc func buttonTappedFor(_ sender: UIButton)
29    {
30 //获得按钮的标识值,并在控制台输出。
31       let tag = sender.tag
32       print("button tag: \(tag)")
33     }
34      
35    override func didReceiveMemoryWarning(){
36      super.didReceiveMemoryWarning()
37      //Dispose of any resources that can be recreated.
38 
39    }
40 }

第三种消息传递模式:

 1 import UIKit
 2 class ViewController: UIViewController{
 3 
 4   override func viewDidLoad(){
 5     super.viewDidLoad()
 6 //Do any additional setup after loading the view, typically from a nib.
 7 //现在开始编写代码创建一个简单的按钮控件
 8 //定义一个整形常量,作为按钮的宽度,该宽度的值为当前屏幕的宽度和40的差
 9     let wid = Int(self.view.frame,size.width - 40)
10 //然后创建一个指定区域的按钮控件,它的坐标位于(20,100),高度为40,宽度为常量的值
11     let greetingButton = UIButton(frame:CGRect(x: 20,y: 100,width: wid,height: 40))
12 //设置按钮在正常状态下的标题文字
13     greetingButton.setTitle("Greeting",for: .normal)
14 //设置按钮的背景按钮为橙色
15     greetingButton.backgroundColor = .orange
16 //初始化一个选择器对象,并设置它的方法名称。
17     let anotherMethod: Selector = #selector(buttonTappedFor(_:))
18 //然后将该选择器对象,添加到按钮的目标之中,
19 //使用该选择器中的方法,响应按钮的点击事件
20     greetingButton.addTarget(self,
21                            action:anotherMethod,
22                               for: .touchUpInside)
23 //将按钮对象添加到当前视图控制器的根视图。
24     self.view.addSubview(greetingButton)
25   }
26 
27 //添加一个方法,用来响应按钮的点击事件。
28    @objc func buttonTappedFor(_ sender: UIButton)
29    {
30 //获得按钮的标识值,并在控制台输出。
31       let tag = sender.tag
32       print("button tag: \(tag)")
33     }
34      
35    override func didReceiveMemoryWarning(){
36      super.didReceiveMemoryWarning()
37      //Dispose of any resources that can be recreated.
38 
39    }
40 }

选择器和定时器搭配使用

 1 import UIKit
 2 class ViewController: UIViewController{
 3 
 4   override func viewDidLoad(){
 5     super.viewDidLoad()
 6 //Do any additional setup after loading the view, typically from a nib.
 7 //现在开始编写代码创建一个简单的按钮控件
 8 //定义一个整形常量,作为按钮的宽度,该宽度的值为当前屏幕的宽度和40的差
 9     let wid = Int(self.view.frame,size.width - 40)
10 //然后创建一个指定区域的按钮控件,它的坐标位于(20,100),高度为40,宽度为常量的值
11     let greetingButton = UIButton(frame:CGRect(x: 20,y: 100,width: wid,height: 40))
12 //设置按钮在正常状态下的标题文字
13     greetingButton.setTitle("Greeting",for: .normal)
14 //设置按钮的背景按钮为橙色
15     greetingButton.backgroundColor = .orange
16 //定义一个新的选择器
17     let newSelector = #selector(calledByController)
18 
19 //方式(1)通过视图控制器对象的perform方法,在子线程中调用该选择器 
20     self.perform(newSelector)
21 
22 //方式(2)在子线程中调用选择器,传递的参数值为空,并延迟两秒执行。
23     self.perform(newSelector,with: nil, afterDelay: 2.0)
24 
25 //方式(3)在主线程中调用选择你器,并等待动作的执行。
26 //当对界面元素进行操作时,需要在主线程中进行
27     self.perform(newSelector,
28                    on: .main,
29                  with: nil,
30         waitUntilDone: true)
31 
32 //方式(4)最后选择在后台线程中运行整个方法,这样就无需关心后台线程中的方法的执行
33     self.performSelector(inBackground: newSelector,with: nil)  
34   }
35 
36 //实现选择器中的方法
37    @objc func calledByController()
38    {
39       print("strengthen")
40     }
41      
42    override func didReceiveMemoryWarning(){
43      super.didReceiveMemoryWarning()
44      //Dispose of any resources that can be recreated.
45 
46    }
47 }

 


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
swift 其他多线程模式发布时间:2022-07-13
下一篇:
苹果在美国30多所大学开设“Swift开发iOS软件”课程发布时间: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