初心者のために、IBと可能な限りのすべての接続が私にとって驚きです。私が見つけたほとんどのチュートリアルは、スパゲティコードの生まれ変わりと呼ばれるものです。エンタングルメントはすべてドラッグによって作成されたすべての接続です。もちろん、私はビューのレイアウト(視覚的要素を配置するサイジング&)のためにIBを使用したいと思います。しかし、コントローラはビューではないので、すべてのコントローラがコードであり、IBのどこにも表示されない場合、混乱は少なくなります。私はこれがスパゲッティを最小限に抑えると思う。また、1回の視聴ごとの朗報を奨励します。その目的のために、ここに質問があります。この戦略を遵守するサンプルプロジェクトはどこにありますか?コントローラーをxibから外す方法
答えて
良い質問です。私が固執しようとしているのは、コントローラーをコードで作って、そのコードとやりとりするXIB/NIBのものにIBOutletsとIBActionsを追加し、コントローラーのコンストラクターに「self」というXIB/NIBをロードするもの所有者であり、IBで私は "File's Owner"プレースホルダに物を接続します。プレースホルダは自分のIDを私のコントローラのクラスに指定します。
サンプルプロジェクトはありませんが、XIBファイルやコードにコントローラを作成する必要がある場合や、どのように動作するかについての情報を提供します。
コントローラがユーザーの操作によって動的に作成された場合、通常はXIBファイルでコントローラをインスタンス化しません。代わりに、上記の害のようなコードでインスタンス化します。これを行うと、コードで作成されたこのコントローラをIBで作成したユーザーインターフェイス要素に接続するためのメカニズムが必要になります。
IBがこれを解決するために提供するメカニズムは、File's Ownerです。 Interface Builderを使用するには、ファイルの所有者を習得することが不可欠です。
ファイルの所有者は、XIBファイルの "内"のオブジェクトではなく、XIBファイルで表されるオブジェクトです。これは、XIBファイルが読み込まれるときに既に存在するオブジェクトのプレースホルダです。実行時にNIBファイルがロードされると、NSBundleメソッド[NSBundle loadNibNamed:ownwer:options:]がロードされます。 ownerパラメータは、XIB/NIBファイル内のファイルの所有者プレースホルダオブジェクトを解決するために使用されます。ファイルが実行時にロードされると、ファイルの所有者に対して行われたすべての接続は、ownerパラメータとして渡されたオブジェクトに対してNSBundleメソッドに解決されます。 iPhoneでは、通常NIBファイルを自分でロードしません。代わりにUIViewControllerがそれを行います。 UIViewControllerのloadViewメソッドのデフォルトの実装は次のようなものになります。だから、
- (void)loadView {
[[self nibBundle] loadNibNamed:[self nibName] owner:self options:nil];
}
を、ファイルの所有者に、あなたのXIBファイル内の要素を接続することにより、あなたはあなたのビューコントローラにそれらを接続することがあります。
アプリケーションに静的に存在するコントローラがいくつかあります。これらのコントローラは永遠に生きています。ルート項目とともにナビゲーションまたはタブコントローラは、通常、アプリケーションの全期間にわたって生きています。その場合、MainWindow.xibファイルにこれらのView Controllerを設定します。他のコントローラーのほとんどは動的に作成され、ユーザーの操作に応じてプログラマチックに作成されます。
- 1. あるコントローラーから別のコントローラーにオブジェクトを渡す方法
- 2. CodeIgniterの別のコントローラーから手動でコントローラーをロードする方法は?
- 3. コードイグナイターで1つのコントローラーから別のコントローラーに変数を渡す方法
- 4. yii2のコントローラーから別のコントローラーにデータを送信する方法
- 5. XIBからのクラッシュを特定する方法
- 6. xibからビューをインスタンス化する方法は?
- 7. 別のクラスからxibをロードする方法
- 8. 単一のxibからuitableviewcellをロードする方法
- 9. xibからperformSegueWithIdentifierを呼び出す方法は?
- 10. XIBからカスタムセルをロードする最適な方法
- 11. スウィフト - ストーリーボードのビューコントローラーからxibファイルをロードする方法は?
- 12. xib viewcontrollerをstoryboard viewcontrollerから呼び出す方法
- 13. 外部xibからビューを読み込めませんか?
- 14. MasterViewのTableViewCell(Xib Cell)からDetailViewのTableViewにナビゲートする方法
- 15. プッシュでxibからViewControllerに遷移する方法
- 16. ビューXIBをビューコントローラにサブビューとしてロードする方法XIB
- 17. ログインフォームをJavaのコントローラーから隠す方法
- 18. MVCコントローラーからJsonオブジェクトを表示する方法
- 19. Jsonを返す方法コントローラーからオブジェクトのリスト
- 20. codeIgnitorでコントローラーからモデルに配列を渡す方法
- 21. レールのコントローラーからJavaScript関数を呼び出す方法
- 22. イオン2:コントローラーからクラスを追加する方法
- 23. ポップアップダイアログからdatetimeをmvcコントローラーに渡す方法
- 24. scalafxのコントローラーからTableViewへのハンドルを取得する方法
- 25. Swift 3でXibからNSViewを読み込む方法
- 26. navigationItemのxibからカスタムビューを中央に揃える方法titleView
- 27. コントローラーで実行されたコマンドから例外をスローする
- 28. Laravel5コントローラーからパブリックフォルダーにアクセスする方法
- 29. xibファイルからViewControllerをロード
- 30. xibからibpluginを削除
ありがとう、ジョン、それは有用な情報です。私はまだIB側にコントローラを持たない戦略を試したいと思っています。あなたはそれが可能であることに同意しますか?私はまだコード例を探しています... – bedouger
すべてのことができます。しかし、私は上記のアプローチをお勧めします。 MainWindow.xibファイルに静的コントローラを作成し、ユーザアクションに応答して、コード内に他のコントローラのほとんど(通常はすべて)を作成します。 –