1

たとえば、3 つの UIViewController があるとします。

  • ユーザーフォームViewContoller
  • NewUserFormViewController : UserFormViewController
  • UpdateUserFormViewController : UserFormViewController

そのため、NewUserFormViewController と UpdateUserFormViewController ビュー コントローラーはその親から継承し、基本的な機能を共有します。異なるのは、作成と更新の方法です。

ビューにも多くの共通点があり、ほとんどすべてです。NewUserFormViewController と UpdateUserFormViewController の間の異なるビュー コンポーネントは、保存タスク (作成または更新) を実行するためのボタンです。

2 つの UIViewController で 1 つの XIB ファイルを共有することは可能ですか? たとえば、UserFormViewController.xib とします。

[[NewUserFormViewController alloc] initWithNibName@"UserFormViewController" bundle:nil];
[[UpdateUserFormViewController alloc] initWithNibName@"UserFormViewController" bundle:nil];

もう 1 つの重要な質問は、Interface Builder で xib ファイルを編集するときに、NewUserFormViewController または UpdateUserFormViewController のどの所有者の参照アウトレットと IBActions について話しているかということです。 (プレースホルダー -> ファイルの所有者を右クリックすると表示される IBActions とアウトレット)

その場合は、1 つの XIB ファイルを使用して、他の特定のビュー コンポーネントをプログラムで追加します (1 つの場所でいくつかの変更を加えることができますが、両方に影響を与えることができるように、XIB ファイルを 1 つだけ持つことは素晴らしいことです)。

4

2 に答える 2

3

IBOutlet「ファイル所有者」は、XCode がそのインスペクターで正しいとを表示できるようにするための単なる規則ですIBAction。ジェネリック (オブジェクト指向用語: 抽象) UserFormViewController(.h、.m、.xib) を作成する場合は、IB で配線します。それを 2 つのNewUserFormViewControllerandにサブクラス化するとUpdateUserFormViewController、アウトレットとアクションが親クラスから問題なく継承されます。

于 2012-05-30T05:58:05.403 に答える
1

@Armaanサブクラスのalloc initメソッドを呼び出すだけで同じ問題に遭遇しました。initWithNibName: を使用してこの問題を修正し、親クラスの xib ファイル名を指定しました。

于 2013-02-05T09:56:18.673 に答える