ios 인터페이스 디자인 의 사용자 정의 Cell

3303 단어
MVC 디자인 모델 을 채택 하 다
1. 모델 층 디자인
새 CJActive 파일 CJActive. h 파일 중
@interface CJActive : NSObject
@property (nonatomic, copy) NSString *icon;
@property (nonatomic, copy) NSString *name;

-(instancetype)initWithDic:(NSDictionary *)dic;
+(instancetype)acitveWithDic:(NSDictionary *)dic;

+(NSMutableArray *)activeList;
@end


CJActive. m 파일
-(instancetype)initWithDic:(NSDictionary *)dic{
    if (self = [super init]) {
        [self setValuesForKeysWithDictionary:dic];
    }
    return self;
}
+(instancetype)acitveWithDic:(NSDictionary *)dic{
    return [[self alloc]initWithDic:dic];
}
+(NSMutableArray *)activeList{
    NSArray *dicArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"apps.plist" ofType:nil]];
    //     
    NSMutableArray *arrayM = [NSMutableArray array];
    
    for (NSDictionary *dic in dicArray) {
        CJActive *active = [CJActive acitveWithDic:dic];
        [arrayM addObject:active];
    }
    return arrayM;

}

2. View 층 디자인
새 CJActive Cell 류 파일, xib 가 있 습 니 다.CJActive Cell. h 파일 중
@class CJActive;
@interface CJActiveCell : UITableViewCell
@property (nonatomic, strong) CJActive *getData;//      ,    

+(instancetype) cellWithTableView:(UITableView *)tableView;
@end


CJActive Cell. xib 파일 에서 사용자 정의 cell 디자인 을 하고 하위 컨트롤 은 CJActive Cell. m 에 연 결 됩 니 다.
@interface CJActiveCell()
@property (weak, nonatomic) IBOutlet UIImageView *icon;
@property (weak, nonatomic) IBOutlet UILabel *title;

@end


CJActive Cell. m 에서 두 가지 방법 을 실현 합 니 다.
//  cell
+(instancetype)cellWithTableView:(UITableView *)tableView{
    static NSString *reuseID= @"activeCell";
    //1.      cell
    CJActiveCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseID];
    //2.    ,      
    if (cell == nil) {
        cell = [[[NSBundle mainBundle]loadNibNamed:@"CJActiveCell" owner:nil options:nil]lastObject];
    }
    //3.  
    return cell;
    
}
//  getData   setter  , getData      ,    setter  ,
//      cell       ,        ,    
-(void)setGetData:(CJActive *)getData{
    _getData = getData;
    self.title.text =getData.name;
   //.......
    } ];

}

3. 컨트롤 러 층 설계
CJActiveController. m 파일 구현
@interface CJActiveController ()
@property (nonatomic, strong) NSArray *activeInfo;//      ,    
@end

@implementation CJActiveController
 
//        
-(NSArray *)activeInfo{
    if (_activeInfo==nil) {        
        _activeInfo = [CJActive activeList];      
    }
    return _activeInfo;   
}

#pragma mark      
-(NSInteger)numberOfSectionsInTableView:(nonnull UITableView *)tableView{
    return 1;
}
-(NSInteger)tableView:(nonnull UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    
    return self.activeInfo.count;
}

-(UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath{
    
    //1.         cell
    CJActiveCell *cell =[CJActiveCell cellWithTableView:tableView];
    
    //2.   
    CJActive *active = self.activeInfo[indexPath.row];
    cell.getData =active;
  
    //3.return
    return  cell;
}

좋은 웹페이지 즐겨찾기