iOS适配器(Adapter)模式

适配器可以让一些接口不兼容的类一起工作,它包装一个对象然后暴漏一个标准的交互接口


具体实现步骤:

1.协议

#import <Foundation/Foundation.h>

@protocol PTabAdapterProtocol <NSObject>

-(UIColor *)buttonTintColor;

-(UIColor *)backgroundColor;

-(NSString*)tabOne;

@end


2.新建一个PTabAdapter 父类,这个类实现PTabAdapterProtocol协议

#import <Foundation/Foundation.h>

#import "PTabAdapterProtocol.h"

@interface PTabAdapter : NSObject<PTabAdapterProtocol>

/**

 *  输入对象

 */

@property (nonatomic,strong)id data;


/**

 *  与输入对象建立联系

 *

 *  @param data 输入的对象

 *

 *  @return 实例对象

 */

- (instancetype)initWithData:(id)data;

@end


#import "PTabAdapter.h"

@implementation PTabAdapter

- (instancetype)initWithData:(id)data {

    self = [superinit];

    if (self) {

        self.data = data;

    }

    returnself;

}

-(UIColor *)buttonTintColor

{

    returnnil;

}

-(UIColor *)backgroundColor

{

    returnnil;

}

-(NSString*)tabOne

{

    returnnil;

}


3.新建 PBeautyEntityAdapter子类,他的父类为PTabAdapter

#import "PTabEntity.h"

@implementation PBeautyEntityAdapter

- (instancetype)initWithData:(id)data

{

    self = [superinit];

    if (self) {

        self.data = data;

    }

    returnself;

}

-(UIColor *)buttonTintColor

{

    PTabEntity *data =self.data;

    return data.buttonTintColor;

}

-(UIColor *)backgroundColor

{

    PTabEntity *data =self.data;

    return data.backgroundColor;

}

-(NSString*)tabOne

{

    PTabEntity *data =self.data;

    return data.tabOne;

}

@end


4.新建一个model

#import <Foundation/Foundation.h>


@interface PTabEntity : NSObject


/**

 *  选项卡1名称

 */

@property (nonatomic,strong)NSString *tabOne;

/**

 *  按钮字体颜色

 */

@property (nonatomic,strong)UIColor  *buttonTintColor;

/**

 *  控件背颜色

 */

@property (nonatomic,strong)UIColor  *backgroundColor;


#import "PTabEntity.h"

@implementation PTabEntity

@end


5.模型赋值

- (void)loadTabData

{

    PTabEntity *tabEntity = [[PTabEntityalloc]init];

    tabEntity.tabOne            =@"详情";

    tabEntity.buttonTintColor   =RGBAColor(96,174,243,1);

    tabEntity.backgroundColor   =RGB(0xd8d8d8,1);

    self.tabAdapter = [[PBeautyEntityAdapteralloc]initWithData:tabEntity];

}


6.新建一个PTabControlViewView

#import <UIKit/UIKit.h>

#import "PTabAdapterProtocol.h"

@interface PTabControlView :UIView


+ (PTabControlView *) initWithNib;

- (void)loadData:(id <PTabAdapterProtocol>)data;


@end


#import "PTabControlView.h"

#import "PTabAdapterProtocol.h"

@interface PTabControlView()

@property (weak,nonatomic)IBOutletUIButton    *tabOne;//选项卡1

@property (weak,nonatomic )id<PTabAdapterProtocol> data;

@end


@implementation PTabControlView


+ (PTabControlView *) initWithNib

{

    PTabControlView *view =nil;

    NSArray *array = [[NSBundlemainBundle]loadNibNamed:@"PTabControlView"owner:selfoptions:nil];

    for (id objin array) {

        if ([objisKindOfClass:[PTabControlViewclass]]) {

            view = (PTabControlView *)obj;

            break;

        }

    }

    return view;

}

- (void) awakeFromNib

{

    [superawakeFromNib];

}


//直接就可以赋值

- (void)loadData:(id <PTabAdapterProtocol>)data

{

    self.data = data;

    //设置按钮标题

    [self.tabOnesetTitle:[datatabOne]forState:UIControlStateNormal];

    //设置背景颜色

    self.backgroundColor = [databackgroundColor];

}

@end


7. 调用

_tabView =   [PTabControlViewinitWithNib];

[_tabViewloadData:self.tabAdapter];


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值