4

iOS 用のアプリケーションが、クリックするとその要素のアクションのメニューを呼び出す要素を表示するとします (たとえば、UIActionSheet など)。問題は、このような多くのクリック可能な要素がアプリケーションのすべてのビューに存在する可能性があるため、アクション メニューとそのデリゲートもどのような状況でも処理する必要があることです。

たとえば、クリック可能な要素は、さまざまな画面に表示される製品の写真 (画像の背景を持つ UIButton) である場合があり、クリックすると、ユーザーに「購入」、「詳細を見る」などのオプションが表示されます。の上。

モジュール式で再利用可能な方法で、関連する動作を備えたこの種のコンポーネントをどのように設計/実装しますか?

個別に簡単にテストでき、必要に応じてオン/オフできる自己完結型のクラスのセットに機能を保持することが重要です。また、機能が使用される可能性のあるすべてのコントローラーにコードを挿入する必要もありません。

ありがとう!

4

2 に答える 2

1

複数のビューに表示できるアプリ全体のUI要素を実装している場合は、UIViewController(つまり、ABCViewController)をサブクラス化します。私は通常、アプリ全体に何かを実装する必要があり、ヘッダーファイルの1つの単語を除いてコードを変更せずに、すべてのビューがそのビューコントローラーのサブクラスである場合に備えて、すべてのプロジェクトの開始時にこれを行います。次に、メニューを表示するための関数とそれを閉じるための関数をABCViewControllerに実装します。シングルトンクラスと比較して、デリゲートを処理することなく、オブジェクトのメモリ管理とViewControllerへのコールバックが簡単であることがわかりました。

于 2012-10-23T19:16:45.983 に答える
0

必要な機能を表すシングルトン クラスを作成するのはどうですか? その後、毎回シングルトン オブジェクトを呼び出すことができます。

@interface MyClickableButtonWithImage : NSObject {
    UIButton *aButton;
}
+(MyClickableButtonWithImage)getInstance;
-(IBAction)buttonClicked:(id)sender;
@property (nonatomic, strong) IBOutlet UIButton *aButton;

@end

// In your .m files, this will get the singleton object
MyClickableButtonWithImage *myCBWI = [MyClickableButtonWithImage getInstance];
于 2012-10-23T16:17:12.777 に答える