swift閉包傳值-小demo

最近開始學習swift,今天學到閉包,來分享一個用閉包從后一個頁面往前一個頁面?zhèn)髦档男emo,其中包含了懶加載的使用,方便以后復習。

首先在 AppDelegate.swift 中給控制器添加導航欄

//
//  AppDelegate.swift
//  Swift02-2
//
//  Created by 奇二世界 on 16/6/13.
//  Copyright ? 2016年 YMN. All rights reserved.
//

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        
        self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
   
        self.window!.backgroundColor = UIColor.whiteColor()
        self.window!.makeKeyAndVisible()
        //定義一個視圖控制器
        let vc = ViewController()
        //創(chuàng)建導航控制器
        let naVC = UINavigationController(rootViewController: vc)
        //設置根視圖
        self.window?.rootViewController = naVC

        // Override point for customization after application launch.
        return true
    }

接下來在ViewController中添加button和label;
button 和 label 是用 swift 的懶加載實現(xiàn);
注意閉包傳值的步驟哦。

//
//  ViewController.swift
//  Swift02-2
//
//  Created by 奇二世界 on 16/6/13.
//  Copyright ? 2016年 YMN. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    /*
    懶加載格式:
    lazy var 變量名:變量類型 = {
        let 名字 = 變量類型()
        return 名字
    }()
    */
    
    // 懶加載按鈕
    lazy var btn:UIButton = {
        let btn = UIButton(frame: CGRectMake(150, 200, 50, 50))
        // btn.backgroundColor = UIColor.redColor()
        btn .setTitle("跳轉", forState: UIControlState.Normal) 
        btn.addTarget(self, action: "btnAction:", forControlEvents: UIControlEvents.TouchUpInside)   
        return btn
    }()
    
    // 懶加載label
    lazy var lab:UILabel = {
        let lab = UILabel(frame: CGRectMake(100, 100, 150, 30))
        lab.backgroundColor = UIColor.greenColor()
        return lab
    }()

    // viewDidLoad中添加控件
     override func viewDidLoad() {
          super.viewDidLoad()
         // 添加btn / label 
          view.addSubview(btn)
          view.addSubview(lab)
    }
    
    // 實現(xiàn)btn點擊方法
    func btnAction(btn:UIButton){
        print("點擊btn")
        let secVC = SecondViewController()
    
        // 閉包傳值-3.實現(xiàn)閉包方法,并執(zhí)行閉包
        secVC.closure = {
            (str:String) -> ()
            in
            self.lab.text = str
        }
        navigationController?.pushViewController(secVC, animated: true)
    }
}

創(chuàng)建一個控制器 SecondViewController 繼承自UIViewController進行跳轉,在這個控制器中添加textField、button進行從后往前的傳值

//
//  SecondViewController.swift
//  Swift02-2
//
//  Created by 奇二世界 on 16/6/13.
//  Copyright ? 2016年 YMN. All rights reserved.
//

import UIKit

class SecondViewController: UIViewController {

    // 閉包傳值-1.聲明閉包方法
    var closure:((str:String) -> ())?
    
    // 懶加載textField
    lazy var tf:(UITextField) = 
    {
        var tf = UITextField(frame: CGRectMake(100, 100, 100, 30))
        tf.backgroundColor = UIColor.cyanColor()
        return tf
    }()
    
    // 懶加載btn
    lazy var btn:UIButton = {
        let btn = UIButton(frame: CGRectMake(100, 200, 50, 50))
        btn.backgroundColor = UIColor.redColor()
        btn .setTitle("傳值", forState: UIControlState.Normal) 
        btn.addTarget(self, action: "btnAction:", forControlEvents: UIControlEvents.TouchUpInside)        
        return btn
    }()
    
// viewDidLoad中添加 btn 和 textField
 override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = UIColor.whiteColor()
        view.addSubview(tf)
        view.addSubview(btn)
    }

    // 實現(xiàn)btn點擊方法
    func btnAction(btn:UIButton){
        //  閉包傳值-2.調用閉包傳值
        closure!(str: tf.text!)

        navigationController?.popViewControllerAnimated(true)
    }
}

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

相關閱讀更多精彩內容

  • 今天的博客算是比較基礎的,還是那句話,基礎這東西在什么時候都是最重要的。說到函數(shù),只要是寫過程序就肯定知道函數(shù)是怎...
    攞你命3OOO閱讀 681評論 0 1
  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 15,256評論 4 61
  • 夜已深 我們騎車還在路上 短襪蓋不住的那截腳踝 涼涼的 雨在下 我們行走沒有遮擋 手掌護不住的那顆頭頂 濕濕的 風...
    ylxyyf閱讀 171評論 3 4
  • 唉。。。
    王賤賤述閱讀 186評論 5 0

友情鏈接更多精彩內容