26

継承する基本ビューコントローラークラスとUIViewController、基本クラスから継承されたクラスがありviewcontrollerます。現在、ファイル所有者が継承されたクラスである nib がありますが、すべてのアクションとアウトレットは基本クラスにあります。nibファイルのアクション\アウトレットを基本クラスのアクション\アウトレットに接続することさえ可能ですか?

4

3 に答える 3

33

基本的にで説明します:

基本クラスを定義し (これを と呼びましょう) 、.h ファイルで IBoutletBaseViewControllerを割り当てます。UITableView

//  BaseViewController.h
@interface BaseViewController : UIViewController    
@property (weak, nonatomic) IBOutlet UITableView *tableView;    
@end

2 つの子クラス (つまりFirstChildViewControllerSecondChildViewController) を定義します。

// FirstChildViewController.h
@interface FirstChildViewController : BaseViewController
@end

// SecondChildViewController.h
@interface SecondChildViewController : BaseViewController
@end

子クラスのいずれか (または両方) が基本クラスの ioutlet を使用するようにするには、参照アウトレットを基本クラスの .h ファイルのプロパティ定義にドラッグするだけです。

ここに画像の説明を入力

これを説明する完全なプロジェクトを次に示します。

于 2014-03-08T06:40:22.007 に答える
7

これを実現するには、次の 2 つの方法があります。

1)

プログラムで(つまり、コードで)実行します

まず、基本クラスでアウトレットを宣言します。

次に、継承されたクラスのコードを介してアウトレットを割り当てます。

2)

XIB ファイルでアウトレットとアクションを割り当てることもできます。Xcode は、基本クラスから継承されたアウトレットとアクションを認識します。

于 2012-04-18T22:22:35.773 に答える
7

基本クラスが Swift フレームワークにある場合、基本クラスとそのアウトレットがパブリックであっても、Xcode 7 がアウトレットを認識しないことがあります。この場合の回避策は次のとおりです。

  1. IB で、基本クラスを使用するようにコントロールを設定します
  2. コンセントを接続する
  3. IB で、派生クラスを使用するようにコントロールを設定します

IB には「!」が表示されます。アウトレットの横にあるように表示されますが、実行時にエラーは発生しません。

誰かがより良い回避策を持っている場合は、私に知らせてください!

于 2015-11-20T19:22:59.617 に答える