私は現在、いくつかIBOutlet
のsとIBAction
メソッドを共有するいくつかのViewControllerをリファクタリングしています。アウトレット宣言とIBAction
メソッドをスーパークラスに移動し、これらをサブクラスから除外しました。
さて、Interface Builderを開くと、スーパークラスで宣言されたアウトレットやアクションが表示されないことがわかりました。リファクタリングの前に接続したので、接続はまだ存在しますが、グレー表示されています。(ボタンを押すとアクションが発生し、アウトレットが適切に変更されるため、接続も機能することに注意してください。)
問題は、どうすればインターフェイスビルダーにスーパークラスからのアウトレットを認識させることができるかということです。これは可能ですか、そうでない場合は、皆さんは何をお勧めしますか?
(楽しみのために、これが私のスーパークラスヘッダーファイルです:)
@interface TFMainViewController : UIViewController {
UIImageView *logoImage, *thinkfunImage;
UIButton *buyFullButton;
}
@property (nonatomic, retain) IBOutlet UIImageView *logoImage, *thinkfunImage;
@property (nonatomic, retain) IBOutlet UIButton *buyFullButton;
-(IBAction) buyFullVersion;
@end
編集:誰かが疑問に思っている場合に備えて、私はiOS4.2SDKでXcodeとIB3.2.5を使用しています。