作成したカスタムビューの動作を管理するためにクラスコントローラを作成する必要があります。 標準的なアプローチは、のUIViewControllerをサブクラス化することであるが、私の場合は、代わりに、基本的に3つの理由 サブクラスNSObjectのに決めた: サブクラスUIViewControllerまたはビューがフルスクリーンでないときにカスタムNSObjectを作成
-
私のビューは、メインビュー・コントローラの小さなサブビューとして追加する必要が
- (そうではないであろうpresentModalViewControllerまたはpushViewController ...のようなものを使用して表示されます)。その中にはツールバーやナビゲーションコントロールは一切必要ありません。
- 私のコントローラは、常にそのビューが使用されるためデバイスの向きについて通知する必要はありません私は通常の回転メッセージwillRotateToInterfaceOrientationなどを受け取ることに興味がないので、ポートレート形式で。
- 私は、このクラスを可能な限り軽量にして、メモリ消費を最小限に抑える必要があります。私は
私のコントローラのインタフェースを使用する必要はありません方法の束ずに軽いクラスを取得する利点を持っているのUIViewControllerをサブクラスではないが、非常に簡単です、例:
@interface MyScrollTabBarController : NSObject <MyTabBarViewDelegate> { }
/**
* The view is created internally by the controller and the client class
* can access to it in readonly mode
*/
@property (nonatomic, readonly) UIView *view;
/**
* A Property to change the view appearance
*/
@property (nonatomic, assign) MyScrollTabBarViewState viewState;
/**
* Others properties used to construct the view's subviews
*/
@property (nonatomic, retain) Location *rootLocation;
@property (nonatomic, readonly, retain) Place *place;
/**
* Designated initializer
*/
- (id)initWithPlace:(Place *)aPlace;
- (void)setRootLocation:(Location *)location animated:(BOOL)animated;
@end
は表示するには、その親ビューコントローラから内部眺め、私はこのようなものを使用します:私はあなたがそれに欠点があるかもしれないと思われる場合、あなたは私の選択についてどう思いますか知りたい
tabBarController = [[MyScrollTabBarController alloc] initWithPlace:aPlace];
tabBarController.viewState = MyScrollTabBarViewStateXX;
tabBarController.view.frame = CGRectMake(...);
[self.view addSubview:tabBarController.view];
をし、何をすべきかあなたは通常、私のようなフルスクリーンではないビュー用のコントローラを書く必要があるときに行います。
ありがとうございました
Heh ... fzwoが最初にそこに着いた。 –
残念ながら、私のアプリケーションはiOS 4を後でサポートする必要があるので、新しいiOS5の機能を利用することはできません。 – ggould75
はい、そうでした。そのため、NSObjectを使用するか、独自のコントローラとしてビューを使用するのが正しいアプローチです。 –