0

すべてをコードで書くことを学ぶためのテストプロジェクトを書いています。ストーリーボードの要素が舞台裏で何をしているかをよりよく理解できるように、このようにしたいと思います

私のプロジェクトには、同じ UI 要素を共有するいくつかの UIViewControllers があります。たとえば、画面の上部にいくつかのボタンがある UITool バーがあります。

ここで、その UIToolbar を別のクラスに配置して、すべてを書き出すか、すべてのコントローラーにコピー アンド ペーストする必要がないようにします。

今、私はこれを行うことでこれを達成できることを知っています:

#import "General_Add_ons.h" //the UIToolbar is properly set up in this file

@interface FirstViewController : General_Add_ons  

// topToolBar[self topToolBar];はツールバーの名前です

ここで明確にしたいのは、これが最善または唯一の方法ですか?

どういうわけか私はこれを行うことができるはずだと感じています:

    General_Add_ons *gao = [[General_Add_ons alloc] init];
    [gao topToolbar];

私はこれについて間違った方法で考えていますか?複数の外部クラスがある場合、最初の方法は制限されているようです。

前もって感謝します。

4

2 に答える 2

1

あなたのアプローチは正しいようです。UIViewController同じ UI 要素または他のコントローラー コードを必要とするインスタンスが複数ある場合は、それらの要素をUIViewControllerサブクラスに配置できます。あなたの場合、クラスGeneral_Add_onsUIViewControllerサブクラスの継承元であると思います。

このクラス (あなたのGeneral_add_ons) には、再利用可能なツールバーのプロパティが必要です。

@property (nonatomic, strong) UIToolbar *toolbar;

余談ですが、Cocoa でのクラス名は、慣例により、接頭辞 + アンダースコアなしの大文字の単語です。Apple には、命名規則に関する優れたリファレンスがあります。

編集

明確にするために、必要な回数だけカスタム サブクラスをサブクラス化できます。たとえば、私のコードには、CCFViewControllerすべてのビュー コントローラーに必要な共通のプロパティと動作をカプセル化するクラスがあります。したがって、プロジェクトでは、すべてのビュー コントローラーがその親コン​​トローラーから継承されます。同様に、ツールバーはスーパークラスに存在し、他のコントローラーはそれを継承します。

于 2012-09-24T11:10:44.993 に答える
0

100%確信はありませんが、次のように試してみてください。

General_Add_ons *gao = [[General_Add_ons alloc] init];
[gao.topToolbar anypossiblemethodcall];
于 2012-09-24T11:15:46.657 に答える