8.3 用协议protocol 委托页面销毁

协议委托

protocol SecondViewControllerDelegate {

    func didTouched(data: String?)

    func fetchData() -> String

}

页面一中用present显示

import UIKit

class ViewController: UIViewController, SecondViewControllerDelegate {

    @IBOutlet weak var titleLabel: UILabel!

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.
    }

    @IBAction func didClick(sender: UIButton) {

        //1. 创建第二个页面的对象

        let secondCtrl = SecondViewController()

        //耦合:松/紧        松点比较好
              //关联使用协议的对象和调用协议的对象,如下

        secondCtrl.delegate = self  //self代表了整个第一个ViewContronller 
        //把第二个文件赋值给当前这个类的对象,使他们联系起来

        //2. 显示

        self.presentViewController(secondCtrl, animated: true, completion: nil)

        //用present显示它
    }

    //通过函数参数从第二个页面返回数据

    func didTouched(data: String?) {
        print(data!)
    }

    //通过返回值给第二个页面传递数据

    func fetchData() -> String {

        return "yyyyy"

    }

}

页面二中就用dismiss让它销毁

import UIKit

protocol SecondViewControllerDelegate {

    func didTouched(data: String?)

    func fetchData() -> String

}

class SecondViewController: UIViewController {

    var delegate: SecondViewControllerDelegate!

    override func viewDidLoad() {

        super.viewDidLoad()

        
        if delegate != nil {

            let s = delegate.fetchData()

            print("第二个页面: ", s)

        }

        self.view.backgroundColor = UIColor.redColor()

    }

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

        if delegate != nil {

            delegate.didTouched("xxxx")

        }

        self.dismissViewControllerAnimated(true, completion: nil)
        //用dismiss销毁
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,734评论 25 709
  • 1,NSObject中description属性的意义,它可以重写吗?答案:每当 NSLog(@"")函数中出现 ...
    eightzg阅读 9,648评论 2 19
  • 我想把书房 改造成这样 可老婆不让 我说 你不让我改 我就去当和尚 老婆说 去 去 赶紧去 马上给我滚 我想了一想...
    一叶茶阅读 1,111评论 3 1
  • 我贵州工作的同事:张涛 张涛,帅哥一枚,2012--2013同在贵州勤邦公司工作的同事,因为我带实验室建设项目,张...
    体脂管理老师志辉阅读 3,405评论 1 0
  • 国庆之后,有一种锁喉的空虚感。 父母知道我要辞职,去德国做一年的互惠生后,竟然对我分外友好。 他们说:出国这件事你...
    达令欧尼阅读 2,744评论 0 3