[解決済み] 複数のサブクラスで1つのストーリーボードuiviewcontrollerを使用する方法
質問
例えば、以下のようなストーリーボードがあるとします。
UINavigationController
を初期ビューコントローラーとして含むストーリーボードがあるとします。そのルートビューコントローラは
UITableViewController
のサブクラスであり、これは
BasicViewController
. これは
IBAction
があり、これはナビゲーションバーの右のナビゲーションボタンに接続されています。
そこから、私は追加のストーリーボードを作成することなく、他のビューのテンプレートとしてストーリーボードを使用したいと思います。これらのビューは全く同じインターフェイスを持ちますが、ルートビューコントローラがクラス
SpecificViewController1
と
SpecificViewController2
のサブクラスである
BasicViewController
.
これら2つのビューコントローラーは、同じ機能とインターフェイスを持ちますが
IBAction
メソッドを除いては、同じ機能とインターフェースを持っています。
以下のような感じでしょうか。
@interface BasicViewController : UITableViewController
@interface SpecificViewController1 : BasicViewController
@interface SpecificViewController2 : BasicViewController
というようなことができるでしょうか?
のストーリーボードをインスタンス化すればいいのでしょうか?
BasicViewController
をサブクラスとするルートビューコントローラが必要です。
SpecificViewController1
と
SpecificViewController2
?
ありがとうございます。
どのように解決するのですか?
素晴らしい質問ですが、残念ながらいい加減な回答しかできません。 UIStoryboardには、初期化時にストーリーボード内のオブジェクトの詳細で定義されたストーリーボードに関連するビューコントローラをオーバーライドできる初期化子が存在しないため、あなたが提案するようなことは現在不可能だと考えています。 ストーリボード内のすべてのUI要素がビューコントローラのプロパティにリンクアップされるのは、初期化時なのです。
デフォルトでは、ストーリーボードの定義で指定されたビューコントローラーで初期化されます。
ストーリーボードで作成した UI 要素を再利用する場合、ビューコントローラにイベントを伝えるために、それらを使用するビューコントローラのプロパティにリンクまたは関連付ける必要があります。
ストーリーボードレイアウトをコピーすることは、特に3つのビューで同様のデザインが必要な場合、それほど大きな問題ではありませんが、そうする場合、以前の関連付けがすべてクリアされていることを確認する必要があります。 ログ出力でKVOエラーメッセージとしてそれらを認識することができます。
あなたが取ることができるいくつかのアプローチ。
-
UI要素をUIViewに格納します - xibファイルで、あなたのベースクラスからそれをインスタンス化し、メインビューのサブビューとして追加します、典型的にはself.viewです。それから、ストーリーボードのレイアウトに、基本的に空白のビューコントローラを配置し、正しいビューコントローラサブクラスを割り当てて使用することができます。 それらはベースから継承されるので、そのビューを取得することになります。
-
コードでレイアウトを作成し、ベースのビューコントローラからそれをインストールします。明らかにこのアプローチはストーリーボードを使用する目的を破っていますが、あなたのケースでは行くべき方法であるかもしれません。 もし、アプリの他の部分にストーリーボードのアプローチの恩恵を受ける部分があるのなら、適切であれば、あちこちで逸脱してもかまいません。 この場合、上記のように、サブクラスを割り当てたバンクビューコントローラを使用し、ベースビューコントローラにUIをインストールさせるだけでしょう。
Appleがあなたの提案するような方法を考え出したらいいのですが、グラフィック要素がコントローラのサブクラスとあらかじめリンクされているという問題はまだ残っています。
良いお年をお迎えください お元気で
関連
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] プロジェクト内の単一ファイルのARCを無効にするにはどうしたらいいですか?
-
[解決済み] UINavigationBarの1px下の行を非表示にする方法
-
[解決済み】iOSで最上位のビューコントローラーを見つける方法
-
[解決済み】ストーリーボードで、複数のコントローラで使用するためのカスタムセルを作成する方法は?
-
[解決済み] Objective-Cのクラス→文字列のようなものです。[NSArray className] -> @"NSArray" のようになります。
-
[解決済み] error: Writeable atomic property cannot pair with synthesized setter/getter and the user defined setter/getter.
-
[解決済み] 角括弧 < > と引用符 " " を使って #import する。
-
[解決済み] NSPredicate: NSDateプロパティの日によるオブジェクトのフィルタリング
-
[解決済み] IOSのUIViewからアプリケーションのドキュメントフォルダに画像を保存する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] error: Writeable atomic property cannot pair with synthesized setter/getter and the user defined setter/getter.
-
[解決済み] 角括弧 < > と引用符 " " を使って #import する。
-
[解決済み] Objective-CのクラスでSwiftのプロトコルをインポートする
-
[解決済み] Objective-Cです。カテゴリ内のプロパティ/インスタンス変数
-
[解決済み] iOSの合成されたプロパティの名前を、先頭のアンダースコアで変更するのはなぜですか?重複
-
[解決済み] Objective-Cでコールバックを実行する方法
-
[解決済み] ベストプラクティス - 自分のプロジェクト/アプリのためのNSErrorドメインとコード
-
[解決済み] メソッドが存在するかどうかをチェックする
-
[解決済み] キーチェーンのアイテムは何がユニークなのか(iOSの場合)?
-
[解決済み] 別のUIViewの下にあるUIViewとのインタラクションを許可する