学校学习ios教程笔记,第十一节初识ios页面中的界面传值

界面通信:界面传值

(1)从前往后传

--属性传值

//事例  将第一个界面中的lable的值传给第二个界面

//现在后一个界面中定义一个可选类型的字符串 来接受前一个界面传过来的值

class TwoViewController: UIViewController {

    var  textlabel:String?         //定义一个可选字符串

    var  textflied:UITextField?

    override func viewDidLoad() {

        super.viewDidLoad()

        textflied = UITextField(frame: CGRectMake(100, 100, 180, 40))

        textflied?.borderStyle = .Line

        textflied?.placeholder = "回传的值"

        textflied?.text = textlabel   //将字符串赋给textflied 的文本text

        view.addSubview(textflied!)

    }

//在第一个界面中进行传值步骤

class ViewController: UIViewController {

    var label:UILabel?

    override func viewDidLoad() {

        super.viewDidLoad()

        label = UILabel(frame: CGRectMake(60, 100, 80, 40))

        label?.text = "传值"    //给label给一个值

        let btn = UIButton(frame: CGRectMake(100, 140, 120,40))

        btn.setTitle("传值", forState: UIControlState.Normal)

        btn.setTitleColor(UIColor.redColor(), forState: UIControlState.Normal)

        btn.backgroundColor = UIColor.yellowColor()

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

        view.addSubview(label!)

        view.addSubview(btn)

    } 

    func btnAc(){

    let twovc = TwoViewController()             //实例化 创建一个第二界面的实例

    twovc.textlabel = label?.text                     //label的文本赋值给 在第二界面中定义的字符串

    navigationController?.pushViewController(twovc, animated: true)

    }

(2)从后往前传

--<1>代理传值

在第二个界面中定义一个协议

protocol TwoProtocol {

func translateString(Str:String)  

}

在第一界面中实现代理方法   将方法中的变量赋给Lable


实现代理,代理自己


在第二界面中

先创建一个代理

var  delegate:TwoProtocol?

    func btnAc(){

    navigationController?.popViewControllerAnimated(true)

       delegate?.translateString((textflied?.text)!)

    }

在返回方法中调用这个代理

--<2>closure(闭包)传值 (闭包传值我觉得是比代理传值要简单一些和更好用一些)

闭包传值跟代理传值的理念是一样的 并没有过大的区别

现在第二个界面中定义一个闭包

//定义闭包

    /*

    let/var 闭包名={

    ()->返回类型

    in

    }

    */

    //用来将该页面的文本框内容赋值到前一个页面的label

    var clousure:((str:String)->Void)?

在跳转函数中使用闭包


在第一个界面中实现这个闭包

 func firstbtn(){

    let senvc = SecondViewController()

     navigationController?.pushViewController(senvc, animated: true)

        senvc.clousure = {

            (str:String)->Void

            in

            self.lab?.text = str

        }

    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值