如何在IBAction中运行委托方法?

时间:2016-05-17 10:13:28

标签: ios swift delegates

我在第二个视图控制器中有一些方法。我通过委托访问它们 - 在func buttonSender里面。主要目标是将按钮的currentTitle作为参数传递给viewController.addNewMessage。这样做的最佳方式是什么?

ChatViewController:

protocol ReactToButtons {
    func buttonSender(viewController: MyChatViewController)
}


class MyChatViewController: ChatViewController{

    var delegate: ReactToButtons?

    override func viewDidLoad() {
        super.viewDidLoad()
        delegate!.buttonSender(self)

    }
}

ContainerViewController:

class ContainerViewController: UIViewController, ReactToButtons {
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        let myVC = segue.destinationViewController as! MyChatViewController
        myVC.delegate = self
    }

    func buttonSender(viewController: MyChatViewController) {
        viewController.addNewMessage(/*HERE GOES CURRENT TITLE*/)
    }

    @IBAction func leftButtonPressed(sender: AnyObject) {
        let currentTitle = sender.currentTitle!

    }

1 个答案:

答案 0 :(得分:1)

我已根据您的代码更改了我的答案

class ContainerViewController: UIViewController, ReactToButtons {
    var delegate: MyChatViewController!
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        let myVC = segue.destinationViewController as! MyChatViewController
        myVC.delegate = self
    }

    func buttonSender(viewController: MyChatViewController) {
    delegate = viewController
    }

    @IBAction func leftButtonPressed(sender: AnyObject) {
        let currentTitle = sender.currentTitle!
        delegate!.addNewMessage(currentTitle)
    }
}