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 に指定すればよさそうなのですが、この場合どのようにすればよいのでしょうか。

宜しくお願いします。