IOS中使用.xib文件封裝一個自定義View


1.新建一個繼承UIView的自定義view,假設類名叫做 MyAppVew

#import <UIKit/UIKit.h>
@class MyApp;

@interface MyAppView : UIView

@property(strong,nonatomic) MyApp*app;

+(instancetype)appView;
@end

MyAppView.h

#import "MyAppView.h"
#import "MyApp.h"


@interface MyAppView ()

@property (weak, nonatomic) IBOutlet UIImageView *iconView;
@property (weak,nonatomic) IBOutlet UILabel *nameLable;

@end

@implementation MyAppView




-(void)setApp:(MyApp *) app
{
    _app=app;
    self.iconView.image=[UIImage imageNamed:app.icon];
    self.nameLable.text=app.name;
    //NSLog(@"%@", app.icon);
}

+(instancetype) appView{
    
    NSBundle *bundle=[NSBundle mainBundle];
    NSArray *objs=[bundle loadNibNamed:@"AppInfoView" owner:nil options:nil];
    return [objs lastObject];

}

+(instancetype) appViewWithApp:(MyApp *)app{
    MyAppView *appView=[self appView];
    appView.app=app;
    return appView;
}


@end

 

2.新建一個MyAppVIew.xib文件來描述MyAppView內部結構

3.修改UIView的類型為MyAppView類型

4.將內部的子控件跟MyAppView進行屬性連線

5.MyAppView提供一個模型屬性

@interface MyAppView ()

 

@property (weak, nonatomic) IBOutlet UIImageView *iconView;

@property (weak,nonatomic) IBOutlet UILabel *nameLable;

 

 

6.重寫模型屬性的set方法,因為set方法中可以拿到外界傳遞的模型數據

 

-(void)setApp:(MyApp *) app
{
    _app=app;
    self.iconView.image=[UIImage imageNamed:app.icon];
    self.nameLable.text=app.name;
    //NSLog(@"%@", app.icon);
}

 

7.把模型數據拆開,分別設置數據到對應的子控件中

 

8.補充:提供一個創建MyAppView的類方法,將讀取的.xib文件的代碼屏蔽起來

 

+(instancetype) appView{
    
    NSBundle *bundle=[NSBundle mainBundle];
    NSArray *objs=[bundle loadNibNamed:@"AppInfoView" owner:nil options:nil];
    return [objs lastObject];

}

+(instancetype) appViewWithApp:(MyApp *)app{
    MyAppView *appView=[self appView];
    appView.app=app;
    return appView;
}

通過封裝數據,對mvc有了初步認識。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM