Swift における Tab 間での関数の呼び出しについて
UITabBarController の異なるタブ間で関数を呼び出す方法について質問です。
UITabBarController で FirstViewController, SecondViewController を作成したのですが、FirstView のボタンを押すことで SecondView の関数を呼び出すにはどうすれば良いのでしょうか。
protocol を介して delegate を設定してやることによってできそうなのですが、以下のようなコードを実行してもうまく出力されませんでした。
FirstViewController.swift
import UIKit
class FirstViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//print("first view generated")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
weak var delegate: Del?
@IBAction func say(sender: AnyObject) {
//print("button pushed")
self.delegate?.sayHello()
}
}
@objc protocol Del {
func sayHello() -> Void
}
SecondViewController.swift
import UIKit
class SecondViewController: UIViewController, Del {
override func viewDidLoad() {
super.viewDidLoad()
//print("second view generated")
//self.sayHello()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func sayHello() -> Void{
print("hello world");
}
}
(tab を切り替えて first, second ともに生成したのちにボタンを押してもコンソールに"hello world"が出力されない。)
delegate を扱っているコードを見ると SecondView の中で FirstView をインスタンス化して delegate を self に指定すればよさそうなのですが、この場合どのようにすればよいのでしょうか。
宜しくお願いします。