Swift閉包傳值

一 、AppDelegate.swift 里設(shè)置導(dǎo)航控制器

import UIKit

@UIApplicationMain

class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

// Override point for customization after application launch.

//? 設(shè)置導(dǎo)航控制器

let vc = ViewController()

window?.rootViewController = UINavigationController(rootViewController: vc)

return true

}

二 、第一個(gè)界面 設(shè)置按鈕和Lable屬性

import UIKit

class ViewController: UIViewController {

//? 懶加載按鈕

lazy var btn:UIButton = {

//? 設(shè)置按鈕的大小

let btn = UIButton(frame: CGRectMake(150, 350, 50, 50))

//? 設(shè)置按鈕的背景顏色

btn.backgroundColor = UIColor.redColor()

//? 設(shè)置按鈕的標(biāo)題

btn .setTitle("First", forState: UIControlState.Normal)

//? 給按鈕的添加點(diǎn)擊事件

btn .addTarget(self, action: "btnAction:", forControlEvents: UIControlEvents.TouchUpInside)

return btn

}()

//? 按鈕點(diǎn)擊事件的方法

func btnAction(btn:UIButton)->(){

let secVC = SecondViewController()

//? 閉包傳值

secVC.closure = {

(str:String)->()

in

self.lab.text = str

}

navigationController?.pushViewController(secVC, animated: true)

}

//? 懶加載UILable

lazy var lab:UILabel = {

//? 設(shè)置lab的大小

let lab = UILabel(frame: CGRectMake(80, 150, 200, 30))

lab.backgroundColor = UIColor.magentaColor()

//? 設(shè)置lab的背景顏色

return lab

}()

override func viewDidLoad() {

super.viewDidLoad()

self.title = "閉包傳值"

//? 改變父視圖背景顏色

view.backgroundColor = UIColor.whiteColor()

//? 將按鈕添加到父視圖

view.addSubview(btn)

//? 將lab添加到父視圖

view.addSubview(lab)

}

}


二 、第二個(gè)界面 設(shè)置按鈕和UITextFiled屬性

import UIKit

class SecondViewController: UIViewController {

//? 創(chuàng)建閉包

var closure:((str:String)->())?

//? 懶加載按鈕

lazy var btn:UIButton = {

//? 設(shè)置按鈕的大小

let btn = UIButton(frame: CGRectMake(150, 350, 80, 50))

//? 設(shè)置按鈕的背景顏色

btn.backgroundColor = UIColor.blueColor()

//? 設(shè)置按鈕的標(biāo)題

btn .setTitle("Second", forState: UIControlState.Normal)

//? 給按鈕的添加點(diǎn)擊事件

btn .addTarget(self, action: "btnAction:", forControlEvents: UIControlEvents.TouchUpInside)

return btn

}()

//? 實(shí)現(xiàn)懶加載的點(diǎn)擊事件方法

func btnAction(btn:UIButton)->(){

//? 執(zhí)行閉包

closure!(str:textField.text!)

navigationController?.popToRootViewControllerAnimated(true)

}

//? 懶加載UITextField

lazy var textField:UITextField = {

let textField = UITextField(frame: CGRectMake(80, 150, 200, 30))

textField.backgroundColor = UIColor.greenColor()

return textField

}()

override func viewDidLoad() {

super.viewDidLoad()

view.backgroundColor = UIColor.cyanColor()

view.addSubview(textField)

view.addSubview(btn)

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 閉包傳值 閉包主要用于回調(diào),這里我們還是模擬從詳情界面?zhèn)髦档街鹘缑妫紫任覀冃枰谠斍榻缑鏋殚]包取個(gè)別名,聲明一個(gè)...
    真愛要有你才完美閱讀 1,403評(píng)論 0 0
  • 在oc 中,反向傳值可以采用block塊來(lái)實(shí)現(xiàn),同樣,在swift 中也有類似的閉包,下面就閉包傳值進(jìn)行簡(jiǎn)單的介紹...
    樂視薯片閱讀 995評(píng)論 0 0
  • 研究了一天閉包,然后發(fā)現(xiàn)尾隨閉包,捕獲值 這些東西!還有方法里面帶閉包,在網(wǎng)上找了些代碼,都不是看的特別明白,感覺...
    HotRay閱讀 728評(píng)論 0 2
  • 1.設(shè)置根視圖控制器 2.在第一個(gè) viewController 中懶加載創(chuàng)建 button 和 label 在 ...
    蹲在路口的男孩丶閱讀 469評(píng)論 0 1
  • 首先搭配界面 第一個(gè)VC 第二個(gè)VC 點(diǎn)擊第一個(gè)VC的 btn 跳轉(zhuǎn)到第二個(gè)VC,首先需要先加入一個(gè)導(dǎo)航欄 在第二...
    抖腿宅還愛古風(fēng)閱讀 284評(píng)論 0 0

友情鏈接更多精彩內(nèi)容