首页 > 代码库 > iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建
iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建
iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建
一、实现效果
说明:该示例在storyboard中使用动态单元格来完成。
二、实现
1.项目文件结构和plist文件
2.实现过程以及代码
在tableview的属性选择器中选择动态单元格。
说明:在storyboard中直接使用其自带的动态单元格完成tableviewcell的定义,并创建了一个管理该cell的类,进行了连线。
实现代码:
数据模型部分:
TXApp.h文件
1 // 08-应用管理 2 // 3 // Created by 鑫 on 14-10-14. 4 // Copyright (c) 2014年 梁镋鑫. All rights reserved. 5 // 6 7 #import <Foundation/Foundation.h> 8 9 @interface TXApp : NSObject10 /**11 图标12 */13 @property (copy, nonatomic) NSString *icon;14 /**15 名称16 */17 @property (copy, nonatomic) NSString *name;18 /**19 大小20 */21 @property (copy, nonatomic) NSString *size;22 /**23 下载量24 */25 @property (copy, nonatomic) NSString *download;26 27 28 @property (nonatomic, assign, getter = isDownloaded) BOOL downloaded;29 30 + (instancetype)appWithDict:(NSDictionary *)dict;31 - (instancetype)initWithDict:(NSDictionary *)dict;32 @end
TXApp.m文件
1 #import "TXApp.h" 2 3 @implementation TXApp 4 + (instancetype)appWithDict:(NSDictionary *)dict 5 { 6 return [[self alloc] initWithDict:dict]; 7 } 8 9 - (instancetype)initWithDict:(NSDictionary *)dict10 {11 if (self = [super init]) {12 [self setValuesForKeysWithDictionary:dict];13 }14 return self;15 }16 @end
视图部分
TXAppCell.h文件
1 #import <UIKit/UIKit.h> 2 @class TXApp, TXAppCell; 3 4 @protocol TXAppCellDelegate <NSObject> 5 @optional 6 - (void)appCellDidClickedDownloadBtn:(TXAppCell *)cell; 7 @end 8 @interface TXAppCell : UITableViewCell 9 @property (nonatomic, strong) TXApp *app;10 11 @property (nonatomic, weak) id<TXAppCellDelegate> delegate;12 13 @end
TXAppCell.m文件
1 / 2 // Created by 鑫 on 14-10-14. 3 // Copyright (c) 2014年 梁镋鑫. All rights reserved. 4 // 5 #import "TXAppCell.h" 6 #import "TXApp.h" 7 8 @interface TXAppCell() 9 @property (weak, nonatomic) IBOutlet UIImageView *iconView;10 @property (weak, nonatomic) IBOutlet UILabel *nameView;11 @property (weak, nonatomic) IBOutlet UIButton *downloadView;12 @property (weak, nonatomic) IBOutlet UILabel *introView;13 - (IBAction)downloadClick:(UIButton *)btn;14 @end15 16 @implementation TXAppCell17 18 - (void)setApp:(TXApp *)app19 {20 _app = app;21 22 self.iconView.image = [UIImage imageNamed:app.icon];23 self.nameView.text = app.name;24 self.introView.text = [NSString stringWithFormat:@"大小:%@ | 下载量:%@", app.size, app.download];25 26 // 覆盖按钮的状态27 self.downloadView.enabled = (self.app.isDownloaded == NO);28 }29 /**30 * 点击了下载按钮31 */32 - (IBAction)downloadClick:(UIButton *)btn {33 // 1.让按钮失效34 self.app.downloaded = YES;35 btn.enabled = NO;36 37 // 2.通知代理38 if ([self.delegate respondsToSelector:@selector(appCellDidClickedDownloadBtn:)]) {39 [self.delegate appCellDidClickedDownloadBtn:self];40 }41 }42 @end
主控制器
TXViewController.m文件
1 // Created by 鑫 on 14-10-14. 2 // Copyright (c) 2014年 梁镋鑫. All rights reserved. 3 // 4 5 #import "TXViewController.h" 6 #import "TXApp.h" 7 #import "TXAppCell.h" 8 9 @interface TXViewController () <TXAppCellDelegate>10 @property (nonatomic, strong) NSArray *apps;11 @end12 13 @implementation TXViewController14 - (NSArray *)apps15 {16 if (_apps == nil) {17 NSArray *dictArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"apps_full.plist" ofType:nil]];18 19 NSMutableArray *appArray = [NSMutableArray array];20 for (NSDictionary *dict in dictArray) {21 TXApp *app = [TXApp appWithDict:dict];22 [appArray addObject:app];23 }24 _apps = appArray;25 }26 return _apps;27 }28 29 - (void)viewDidLoad30 {31 [super viewDidLoad];32 33 }34 35 - (BOOL)prefersStatusBarHidden36 {37 return YES;38 }39 40 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section41 {42 return self.apps.count;43 }44 45 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath46 {47 //拿到控制器的tableView48 TXAppCell *cell = [tableView dequeueReusableCellWithIdentifier:@"app"];49 cell.delegate = self;50 cell.app = self.apps[indexPath.row];51 return cell;52 }53 54 #pragma mark - cell的代理方法55 - (void)appCellDidClickedDownloadBtn:(TXAppCell *)cell56 {57 // 1.添加标签58 UILabel *label = [[UILabel alloc] init];59 label.text = [NSString stringWithFormat:@"成功下载%@", cell.app.name];60 label.font = [UIFont systemFontOfSize:12];61 label.textAlignment = NSTextAlignmentCenter;62 label.textColor = [UIColor whiteColor];63 label.backgroundColor = [UIColor blackColor];64 label.frame = CGRectMake(0, 0, 150, 25);65 label.center = CGPointMake(160, 240);66 label.alpha = 0.0;67 label.layer.cornerRadius = 5;68 label.clipsToBounds = YES;69 [self.view addSubview:label];70 71 // 2.动画72 [UIView animateWithDuration:0.5 animations:^{73 label.alpha = 0.5;74 } completion:^(BOOL finished) {75 [UIView animateWithDuration:0.5 delay:0.5 options:UIViewAnimationOptionCurveLinear animations:^{76 label.alpha = 0.0;77 } completion:^(BOOL finished) {78 [label removeFromSuperview];79 }];80 }];81 }82 83 84 @end
补充说明
在程序中通过标示符取出对应的cell,是因为在storyboard中已经对cell打上了标示符(app)的标签。
1 //组-行-数据 2 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 3 { 4 //创建cell 5 static NSString *identifier=@"app"; 6 YYappCell *cell=[tableView dequeueReusableCellWithIdentifier:identifier]; 7 //设置cell的数据 8 YYappInfo *appinfo=self.apps[indexPath.row]; 9 //设置代理10 cell.delegate=self;11 cell.app=appinfo;12 //返回cell13 return cell;14 }
iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。