2

私のiPadアプリケーションでは、ナビゲーションバーのようなleftBarがあり、左側に垂直に配置されています。このバーには多くのボタンとタイトルがあります。

leftBar が mainView に追加されます (私のアプリケーションには RootViewController があり、 leftBar がルートのビューに追加されます)。leftBar は、すべてのアプリケーション ナビゲーション ビューで表示されます。他のすべてのオブジェクト (コントローラー) がバーをカスタマイズできるようにするために、2 つのメソッドでデータ ソースとデリゲート プロトコルを作成しました。

私の質問は: 委任とデータ ソース パターンを正しく使用していますか? 正しい方法はどれですか (1 または 2) ? または、2 つの方法が悪く、これを行うための最善の解決策はありますか?

#import <UIKit/UIKit.h>
@protocol ToolBarDataSource <NSObject>

@optional

/** Asks the data source of the origin of the view
 @disscussion overide thid methode if yoy want différente origin
 of the view, the default is '(0,0)'
 */
- (CGPoint)toolBarViewOrigin;

/** Asks the data source for the backgounnd image for the view
 @Disscussion The toolBar view has a background image by default
 implemente this methode to customize it
 */
- (UIImage *)toolBarBackgroundImage;

/** Asks the data source for the frame for the button spécified with the tag
 @param buttonTag The button tag
 */
- (CGRect)toolBarButtonFrameWithTag:(NSUInteger)buttonTag;

/** Asks the data source for the button title spécified with the tag
 @param buttonTag The button tag
 */
- (NSString *)toolBarTitleForButtonWithTag:(NSUInteger)buttonTag;

/** Asks the data source for the button title font spécified with the tag
  @param buttonTag The button tag
*/
- (UIFont *)toolBarTitleFontForButtonWithTag:(NSUInteger)buttonTag;

/** Asks the data source for the button title text color spécified with the tag
@param buttonTag The button tag
*/
- (UIColor *)toolBarTitleColorForButtonWithTag:(NSUInteger)buttonTag;

/** Asks the data source to return the title to be displayed in the toolBar*/
- (NSString *)titleForToolBar;

/** Asks the data source to return the frame of the title label */
- (CGRect)toolBarTitleFrame;

@end


@protocol ToolBarDelegate <NSObject>

@optional

/** Tells the delegate that a button in the toolBar has been clicked
 @param buttonTag The button tag
 @disscussion Each button int the tollBar View is identified with a Tag.
 @see Constant.h for more details for all the tags
 */
- (void)toolBarButtonClickedWithTag:(NSUInteger)buttonTag;

@end


@interface ToolBarVC : UIViewController
/** The object that acts as the delegate of the receiving toolBar view. */
@property (nonatomic, assign)id <ToolBarDelegate>toolBarDelegate;

/** The object that acts as the data source of the receiving toolBar view. */
@property (nonatomic, assign)id <ToolBarDataSource>toolBarDataSource;

@end

方法 2:

このメソッドでは、次のようなデラゲット メソッドで作成しました。

@protocol ToolBarDelegate <NSObject>

 @optional
- (void)setToolBarTitle:(NSString *)title
                   font:(UIFont *)font
                  color:(UIColor *)color
                  frame:(CGRect)frame;


/** */
- (void)setBackButtonBackgroundImage:(UIImage *)image
                           title:(NSString *)title
                           color:(UIColor *)color
                           frame:(CGRect)frame;


/** */
- (void)setRightButtonBackgroundImage:(UIImage *)image
                               title:(NSString *)title
                               color:(UIColor *)color
                               frame:(CGRect)frame;

@end
4

1 に答える 1

2

あなたはそれを正しくやっています

方法 1

長所:

  • すべてをセットアップするには、メソッドを取得しました。
  • 将来のプロジェクトに柔軟性を与える
  • 文書化の改善

短所

  • ツールバーをセットアップするには、すべてのメソッドを作成して設定する必要があります。
  • そのためのコードが多すぎる

方法 2

長所:

  • Sigle メソッドは私のツールバーをセットアップします [それが私が探しているものです]

短所:

  • 単一のプロパティを変更することはできません

したがって、重要なのは、それをどのように使用することになっているかです

于 2013-06-04T10:48:57.123 に答える