swift笔记(六)--传值

在项目开发中,我们肯定会有传值的问题.简单学习下swift的传值

单例

单例是能在全局访问的实例.从我们第几次创建,到整个app生命周期结束时释放.
在swift中 创建如下

class PersonManger: NSObject {

    var age:NSInteger?
    static let shareinstance = PersonManger()
//    private override init(){}
}

age是单例的一个属性,当然这里也可以添加函数方法.

正向传值

把数据传递到跳转的下一个界面.

//跳转到第二个界面的时候 传递参数
func Forwardvalue(){
        
        let secVC = SecondVC.init()
        secVC.nameStr = "hello world"
        self.present(secVC, animated: true)


class SecondVC: UIViewController {

    var nameStr:String?
反向传值
  • 使用协议代理实现
    从第一个界面跳转到secondVC,然后secondVC界面返回给第一界面数据
    1.首先 我们要在secondVC界面定义协议,协议需要实现的方法
    2.持有协议
    3.协议函数返回的数据
protocol BackForwardDelegate {
    
    func backchuanzhi(index:NSInteger) ->Void
}
var delegate:BackForwardDelegate?

  if let testdelegate = delegate {
            testdelegate.backchuanzhi(index: 10)
        }

在第一界面当中 我们需要遵守协议
设置代理
实现协议中的方法

  /// 反向传值
    func backvalue(){
        
        let secVC = SecondVC.init()    
        //使用代理协议
        secVC.delegate = self
        
        self.present(secVC, animated: true)
    }
 func backchuanzhi(index: NSInteger) {
        print("协议传递的是:\(index)")
    }
  • 使用闭包实现
    swift中的闭包传值 和oc中的block传值是相似的
    secondVC中的代码如下
//声明闭包
typealias FirstBackBlock = (_ index:NSInteger) -> Void

var testBlock:BackBlock?
  if testBlock != nil {
            self.testBlock!(1)
        }

而在第一个界面中

et secVC = SecondVC.init()
        
        //使用闭包
        secVC.testBlock = { [weak self] (index:NSInteger) in
            
            print("反向传递过来的参数是:\(index)")
        }
通知传值

传递参数

NotificationCenter.default.post(name: Notification.Name(rawValue: "TestNoti"), object: self, userInfo: ["key" : "123456"])

接收参数

 NotificationCenter.default.addObserver(self, selector: #selector(notibtnclick(noti:)), name: Notification.Name(rawValue: "TestNoti"), object: nil)
 @objc func notibtnclick(noti:Notification){
        
        print(noti)
        
    }
//记得移除通知
 deinit{
   NotificationCenter.default.removeObserver(self)
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容