iOS

Swift4:モーダルの呼び出し元ボタンの変更

モーダル表示をして処理をしたとき、呼び出し元のボタンを変更したいとき、どうすればいいか。

多くの場合、呼び出し元で値を設定し、モーダル・ビューを表示してそこで処理をし、呼び出し元に返したくなります。仮に値を返せないとしても、せめて呼び出し元のボタンアイコンだけは変更したい。

例としては、検索エンジンをモーダル・ビュー側で選択・決定します。このあと、検索欄に文字列を入れて検索します。しかし、どの検索エンジンが選ばれているか、ボタン・アイコンが変更されていないと、わかりようがありません。

やり方として、もっとスマートで適切な方法があると思いますが、とりあえずこうすればいいというやり方がわかりました。プログレスバーを変更する箇所にボタン変更を入れておけば、モーダル・ビュー側でボタン変更をすると同時に呼び出し元画面のボタンも自動的に変更されます。

呼び出し元のプログレス処理

@IBAction func ExecIBActionProgressBar(){
self.xProgress.progress         += 0.1
if(self.xProgress.progress >= 1.0) {
self.xProgress.removeFromSuperview()
xWebView.stopLoading()
} else { }
ExecUpdateIcon()//現在の画面アイコンを最新のものに更新する。
}

func ExecUpdateIcon() {//<*画面アイコンを更新する*>
xEngine.setImage(G.engIcon, for: .normal) //検索エンジンのアイコンを更新。
xAdblockOnOff.setTitle(S.staAdsBlockIcon, for: .normal) //広告ブロックのON/OFF。
}

モーダル・ビュー側の処理

Screenshot 2018-01-11 14.58.20

Screenshot 2018-01-11 15.01.24

Categories: iOS, Swift, 技術