一 、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)
}