美文网首页
swift 代理传值

swift 代理传值

作者: 旅途开发者 | 来源:发表于2016-12-12 16:58 被阅读140次

    swift中的代理传值跟oc中的用法基本一样,都是用于反向传值,这里假设a界面向b界面传值为正向传值,则:

    在b界面

    //设置代理方法

    protocol BaseOneControllerDelegate {

              func sendMessage(message:NSString?)

    }

    class BaseOneController: UIViewController {

    //定义代理属性

    var delegate:BaseOneControllerDelegate?

    override func viewDidLoad() {

    super.viewDidLoad()

    self.view.backgroundColor = UIColor.white

    let segMentArray = ["代理返回"]

    segment = UISegmentedControl(items: segMentArray)

    segment.frame = CGRect.init(x: 0, y: 100, width: kWidth, height: 30)

    //添加动作事件

    segment.addTarget(self, action: #selector(BaseOneController.segmentAction(sender:)), for: UIControlEvents.valueChanged)

    self.view.addSubview(segment)

    }

    func segmentAction(sender:UISegmentedControl) {

    print("我点击了第 \(sender.selectedSegmentIndex) 选项")

      if sender.selectedSegmentIndex == 0 {

    //完成代理事件

          if (delegate != nil) {

            self.delegate?.sendMessage(message: "代理传值成功,点击返回按钮")

          _ = self.navigationController?.popViewController(animated: true)

      }

    override func didReceiveMemoryWarning() {

    super.didReceiveMemoryWarning()

    // Dispose of any resources that can be recreated.

    }

    }

    在a界面,首先添加b界面的代理BaseOneControllerDelegate

    let baseOne = BaseOneController()

    //跳转的时候记得设置好代理

    baseOne.delegate = self

    self.navigationController?.pushViewController(baseOne, animated: true)

    //代理方法

    func sendMessage(message: NSString?) {

    print("\(message)")

    }

    相关文章

      网友评论

          本文标题:swift 代理传值

          本文链接:https://www.haomeiwen.com/subject/sngmmttx.html