1.单例模式总结
final class LTSingle: NSObject {
static let sharedInstance = LTSingle()
private override init() {}
}
调用
let shared = LTSingle.sharedInstance
LTLog(shared)
2.属性传值总结
第二个控制器 声明属性
var postValue: String?
调用
if postValue != nil {
LTLog(postValue!)
}
第一个控制器
firstVc.postValue = "传值到下一页"
3.代理传值总结
第二个控制器 声明协议
protocol LTDelegate: NSObjectProtocol {
func postValueToUpPage(str: String)
}
声明属性
weak var delegate: LTDelegate?
点击事件中调用
delegate?.postValueToUpPage(str: "传值到上一页")
第一个控制器 遵守协议
firstVc.delegate = self
实现代理方法
extension ViewController: LTDelegate {
func postValueToUpPage(str: String) {
LTLog(str)
}
}
4.闭包传值总结
第二个控制器 声明闭包
typealias closureBlock = (String) -> Void
声明属性
var postValueBlock:closureBlock?
guard let postValueBlock = postValueBlock else { return }
postValueBlock("传值到上一页")
或者
if postValueBlock != nil {
postValueBlock!("传值到上一页”)
}
第一个控制器调用
firstVc.postValueBlock = { (str) in
print(str)
}
5.通知传值总结
1.注册通知
let LTNOTIFICATION_TEST = Notification.Name.init(rawValue: "notificationTest")
NotificationCenter.default.addObserver(self, selector: #selector(receiverNotification(_:)), name: LTNOTIFICATION_TEST, object: nil)
@objc private func receiverNotification(_ notification: Notification) {
guard let userInfo = notification.userInfo else {
return
}
let age = userInfo["age"] as? Int
let key = userInfo["key1"] as? String
if key != nil && age != nil{
print("\(age!)" + "-->" + key!)
}
}
2.发送通知
NotificationCenter.default.post(name: LTNOTIFICATION_TEST, object: self, userInfo: ["key1":"传递的值", "age" : 18])
3.移除通知
deinit {
NotificationCenter.default.removeObserver(self)
}
swift3.0 传值总结(属性、代理、闭包、通知)
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 属性传值: 顾名思义,常用的就是从前往后传值;属性传值一共分为三步:1、定义一个要与传值数据类型相同的属性2、给属...
- 之前,我整理过OC的5种基本界面传值方式,很多朋友都有很喜欢,今天再整理一下Swift中的7种常用界面传值供大家参...
- //懒加载//swift中固定写法lazy var l:UILabel = { //viewDidLoad中vie...