継承する基本ビューコントローラークラスとUIViewController
、基本クラスから継承されたクラスがありviewcontroller
ます。現在、ファイル所有者が継承されたクラスである nib がありますが、すべてのアクションとアウトレットは基本クラスにあります。nibファイルのアクション\アウトレットを基本クラスのアクション\アウトレットに接続することさえ可能ですか?
3 に答える
基本的に例で説明します:
基本クラスを定義し (これを と呼びましょう) 、.h ファイルで IBoutletBaseViewController
を割り当てます。UITableView
// BaseViewController.h
@interface BaseViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITableView *tableView;
@end
2 つの子クラス (つまりFirstChildViewController
とSecondChildViewController
) を定義します。
// FirstChildViewController.h
@interface FirstChildViewController : BaseViewController
@end
// SecondChildViewController.h
@interface SecondChildViewController : BaseViewController
@end
子クラスのいずれか (または両方) が基本クラスの ioutlet を使用するようにするには、参照アウトレットを基本クラスの .h ファイルのプロパティ定義にドラッグするだけです。
これを説明する完全なプロジェクトを次に示します。
これを実現するには、次の 2 つの方法があります。
1)
プログラムで(つまり、コードで)実行します
まず、基本クラスでアウトレットを宣言します。
次に、継承されたクラスのコードを介してアウトレットを割り当てます。
と
2)
XIB ファイルでアウトレットとアクションを割り当てることもできます。Xcode は、基本クラスから継承されたアウトレットとアクションを認識します。
基本クラスが Swift フレームワークにある場合、基本クラスとそのアウトレットがパブリックであっても、Xcode 7 がアウトレットを認識しないことがあります。この場合の回避策は次のとおりです。
- IB で、基本クラスを使用するようにコントロールを設定します
- コンセントを接続する
- IB で、派生クラスを使用するようにコントロールを設定します
IB には「!」が表示されます。アウトレットの横にあるように表示されますが、実行時にエラーは発生しません。
誰かがより良い回避策を持っている場合は、私に知らせてください!