質問: vC self.delegate.selectRd(rd: sIn!) //デリゲートでViewControllerに引数付きで処理委託 } } ```
回答: 問題はbuttonTappedメソッドの中の `let vC = ViewController()` と `self.delegate = vC` だと思います。 この処理で格納されているvCは、今画面に表示されているViewControllerではなく、新しく生成した別のViewControllerインスタンスです。新しいViewControllerは画面に表示されていないので、delegateメソッドを呼び出してprintは出ますが、headerButtonのタイトルを変更しても、画面に表示されていない別のViewControllerのheaderButtonタイトルを変更しています。 上記の2行を削除して、ViewControllerのrdHeaderメソッドの中に `vHeader.delegate = self` と記述すれば、今画面に表示されているViewControllerのheaderBUttonのタイトルを変更できると思います。 なお、delegateプロパティは `weak var delegate: Change!` のようにweak属性にすることをお勧めします。 (参考)