representedObjectの再整理です。
追記(12/20/2017):iOSのクラス間での変数受け渡し(共有)の仕方はsingletonを使えばいいです。Swift3でシングルトンを試すが参考になります。modal viewでエラー表示するclassと呼び出し元classでメッセージ等を共有したのですが、比較的に簡単に行きました。macOSではどうすればいいか、時間ができたら再考の余地ありです。
追記(5/15/2015):先のサンプルコード及びこのサンプルコードをベースにすると問題があります。2nd viewのクラスを抜けてしまった後、表示されているEXIFの項目をクリックしてIBActionで編集処理を行おうとしたのですが、main viewのクラスも2nd viewのクラスも変数が初期化され残っていませんでした。後程、正しく動作するものをアップします。
何はともあれ、こうすればクラス間でviewを切り替え、変数引き渡しができます。
- view間(クラス間)のデータの受け渡しは、サブクラスからの直接参照はNGで、representedObjectを使う必要がある。
- 受け渡す変数(この場合はxbParm)は、Referencing Outletsで自分のviewであるmesaGPS Windowと接続する。
- Action buttonは、action-modalでmesaEditPhoto Windowと接続する(storyboard参照)。
- ふたつ目のviewにObjectを追加したい場合(この例ではmesaEditPhotoを追加済み)、 required init?(coder: (NSCoder!))を入れると異常終了になるので、このコードは入れない。
- ふたつ目のviewを特定事象と連動してプログラムで起動したい場合、xbPushButton?.performClick(self)で実現できる。
これはたとえばサムネール一覧の中の特定サムネールがクリックされたとき、ふたつ目のviewを起動させたいときに使える。 - overrideはこのサンプルにあるものを使う。
- prepareForSegueでサブクラスの定義とrepresentedObjectで引き渡す変数のxbParmの定義を行う。
- ふたつ目のviewは、self.dismissController(self)でwindowを閉じる。
これで、2つのwindowの制御ができるようになったので、これからは機能の作り込みに専念できます。
Advertisements