2番目のビューコントローラにいくつかのメソッドがあります。私は代理人を介してそれらにアクセスします - 内部func buttonSender。主な目的は、ボタンのcurrentTitleを引数としてviewController.addNewMessageに渡すことです。これを行う最善の方法は何ですか?IBAction内で委託メソッドを実行するにはどうすればよいですか?
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!
}
に合わせて私の答えを変更しています{'任意のボタンメソッドを使用します。 – kennytm
それはそうではありません。私は2番目のビューコントローラでいくつかのメソッドを持っています。私は代理人を介してそれらにアクセスします - 内部func buttonSender。主な目的は、ボタンのcurrentTitleを引数としてviewController.addNewMessageに渡すことです。 – loup4
delegateメソッドのシグネチャをcurrentTitleも含めて変更することはできませんか? –