gpt4 book ai didi

objective-c - 最佳实践委托(delegate)&&数据源模式

转载 作者:行者123 更新时间:2023-12-03 16:37:14 25 4
gpt4 key购买 nike

在我的 iPad 应用程序中,我有一个像导航栏一样的 leftBar,它垂直放置在左侧,该栏有很多按钮和标题。

leftBar被添加到mainView(我的应用程序有一个RootViewController,并且leftBar被添加到 Root View )。 leftBar 在所有应用程序导航 View 中都可见。为了允许所有其他对象( Controller )自定义栏,我用两种方法创建了数据源和委托(delegate)协议(protocol)。

我的问题是:我是否正确使用委托(delegate)和数据源模式?哪一个是正确的方法(1 或 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:

在这个方法中,我在 delaget 方法中创建了这样的:

@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

最佳答案

你做得对

方法一

优点:

  • 设置我得到的每一个方法。
  • 为 future 的项目提供灵 active
  • 更好的记录

缺点

  • 要设置工具栏,您必须创建并设置所有方法。
  • 代码太多

方法2

优点:

  • 单一方法将设置我的工具栏[这就是我要寻找的]

缺点:

  • 要更改单个属性是不可能的

所以重要的是你应该如何使用它

关于objective-c - 最佳实践委托(delegate)&&数据源模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16915306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com