iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建

简介:

一、实现效果

说明:该示例在storyboard中使用动态单元格来完成。

二、实现

1.项目文件结构和plist文件

2.实现过程以及代码

在tableview的属性选择器中选择动态单元格。

说明:在storyboard中直接使用其自带的动态单元格完成tableviewcell的定义,并创建了一个管理该cell的类,进行了连线。

实现代码:

数据模型部分:

YYappInfo.h文件

复制代码
 1 //  2 // YYappInfo.h
 3 // 01-使用动态单元格来完成app应用程序管理界面的搭建
 4 //  5 // Created by 孔医己 on 14-6-2.
 6 // Copyright (c) 2014年 itcast. All rights reserved.
 7 //
 8  9 #import <Foundation/Foundation.h>
10 11 @interface YYappInfo : NSObject
12 @property(nonatomic,copy)NSString *size;
13 @property(nonatomic,copy)NSString *download;
14 @property(nonatomic,copy)NSString *icon;
15 @property(nonatomic,copy)NSString *name;
16 17 18 19 -(instancetype)initWithDict:(NSDictionary *)dict;
20 +(instancetype)appInfoWithDict:(NSDictionary *)dict;
21 @end
复制代码

YYappInfo.m文件

复制代码
 1 //  2 // YYappInfo.m
 3 // 01-使用动态单元格来完成app应用程序管理界面的搭建
 4 //  5 // Created by 孔医己 on 14-6-2.
 6 // Copyright (c) 2014年 itcast. All rights reserved.
 7 //
 8  9 #import "YYappInfo.h" 10 11 @implementation YYappInfo
12 13 -(instancetype)initWithDict:(NSDictionary *)dict
14 {
15 if (self=[super init]) {
16 //使用KVC 17  [self setValuesForKeysWithDictionary:dict];
18  }
19 return self;
20 }
21 22 23 +(instancetype)appInfoWithDict:(NSDictionary *)dict
24 {
25 26 return [[self alloc]initWithDict:dict];
27 }
28 @end
复制代码

视图部分

YYappCell.h文件

复制代码
 1 //  2 // YYappCell.h
 3 // 01-使用动态单元格来完成app应用程序管理界面的搭建
 4 //  5 // Created by 孔医己 on 14-6-2.
 6 // Copyright (c) 2014年 itcast. All rights reserved.
 7 //
 8  9 #import <UIKit/UIKit.h>
10 11 12 @class YYappInfo,YYappCell;
13 14 @protocol YYappCellDelegate <NSObject>
15 -(void)btnDidClick:(YYappCell *)cell;
16 17 18 @end 19 @interface YYappCell : UITableViewCell
20 21 @property(nonatomic,strong)YYappInfo *app;
22 //@property(nonatomic,strong)YYViewController *controller; 23 @property(nonatomic,strong)id <YYappCellDelegate> delegate;
24 25 @end
复制代码

YYappCell.m文件

复制代码
 1 //  2 // YYappCell.m
 3 // 01-使用动态单元格来完成app应用程序管理界面的搭建
 4 //  5 // Created by 孔医己 on 14-6-2.
 6 // Copyright (c) 2014年 itcast. All rights reserved.
 7 //
 8  9 #import "YYappCell.h" 10 #import "YYappInfo.h" 11 12 @interface YYappCell ()
13 @property (weak, nonatomic) IBOutlet UIImageView *appimg;
14 15 @property (weak, nonatomic) IBOutlet UILabel *apptitle;
16 @property (weak, nonatomic) IBOutlet UILabel *appdownload;
17 @property (weak, nonatomic) IBOutlet UIButton *appbtn;
18 19 @end 20 @implementation YYappCell
21 22 23 -(void)setApp:(YYappInfo *)app
24 {
25 _app=app;
26 self.apptitle.text=_app.name;
27 self.appdownload.text=[NSString stringWithFormat:@"大小 %@ | 下载量 %@次",_app.size,_app.download];
28 self.appimg.image=[UIImage imageNamed:_app.icon];
29 30 }
31 32 #pragma mark- 完成按钮点击事件
33 34 - (IBAction)btnOnclick:(UIButton *)sender
35 {
36 //按钮被点击后,变为不可用状态 37 sender.enabled=NO;
38 39 //通知代理,完成提示下载已经完成的动画效果 40 if ([self.delegate respondsToSelector:@selector(btnDidClick:)]) {
41 //一般而言,谁触发就把谁传过去 42 [self.delegate btnDidClick:self];
43  }
44 }
45 46 @end
复制代码

主控制器

YYViewController.m文件

复制代码
 1 //  2 // YYViewController.m
 3 // 01-使用动态单元格来完成app应用程序管理界面的搭建
 4 //  5 // Created by 孔医己 on 14-6-2.
 6 // Copyright (c) 2014年 itcast. All rights reserved.
 7 //
 8  9 #import "YYViewController.h"  10 #import "YYappInfo.h"  11 #import "YYappCell.h"  12  13 @interface YYViewController ()<UITableViewDataSource,YYappCellDelegate>
 14 @property(nonatomic,strong)NSArray *apps;
 15 @property (strong, nonatomic) IBOutlet UITableView *tableview;
 16  17 @end  18  19 @implementation YYViewController
 20  21 - (void)viewDidLoad
 22 {
 23  [super viewDidLoad];
 24 }
 25  26 #pragma mark- 使用懒加载先把plist文件中得数据加载进来
 27 -(NSArray *)apps
 28 {
 29 if (_apps==Nil) {
 30 NSString *fullpath=[[NSBundle mainBundle]pathForResource:@"apps_full.plist" ofType:Nil];
 31 NSArray *arrayM=[NSArray arrayWithContentsOfFile:fullpath];
 32  33 NSMutableArray *modles=[NSMutableArray arrayWithCapacity:arrayM.count];
 34 for (NSDictionary *dict in arrayM) {
 35 YYappInfo *appinfo=[YYappInfo appInfoWithDict:dict];
 36  [modles addObject:appinfo];
 37  }
 38 _apps=[modles copy];
 39  }
 40 return _apps;
 41 }
 42  43  44 #pragma mark- 设置tableview的数据源方法
 45 //  46 -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
 47 {
 48 return 1;
 49 }
 50 //  51 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
 52 {
 53 return self.apps.count;
 54 }
 55 //组-行-数据  56 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 57 {
 58 //创建cell  59 static NSString *identifier=@"app";
 60 YYappCell *cell=[tableView dequeueReusableCellWithIdentifier:identifier];
 61 //设置cell的数据  62 YYappInfo *appinfo=self.apps[indexPath.row];
 63 //设置代理  64 cell.delegate=self;
 65 cell.app=appinfo;
 66 //返回cell  67 return cell;
 68 }
 69  70 #pragma mark- 设置代理
 71 -(void)btnDidClick:(YYappCell *)cell
 72 {
 73 //取出模型  74 YYappInfo *app=cell.app;
 75 NSLog(@"daili");
 76 UILabel *lab=[[UILabel alloc]init];
 77 //提示的显示位置  78 lab.frame=CGRectMake(60, 300, 200, 20);
 79 //设置提示文本  80 lab.text=[NSString stringWithFormat:@"%@已经下载完成",app.name];
 81 //设置文本背景颜色  82  [lab setBackgroundColor:[UIColor grayColor]];
 83  [self.view addSubview:lab];
 84 lab.alpha=1.0;
 85  86 //设置动画效果  87 [UIView animateWithDuration:2.0 animations:^{
 88 lab.alpha=0.0;
 89 } completion:^(BOOL finished) {
 90 //把弹出的提示信息从父视图中删除  91  [lab removeFromSuperview];
 92  }];
 93 }
 94  95 #pragma mark-隐藏状态栏
 96 -(BOOL)prefersStatusBarHidden
 97 {
 98 return YES;
 99 }
100 101 @end
复制代码

补充说明

  在程序中通过标示符取出对应的cell,是因为在storyboard中已经对cell打上了标示符(app)的标签。

复制代码
//组-行-数据
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
 //创建cell static NSString *identifier=@"app"; YYappCell *cell=[tableView dequeueReusableCellWithIdentifier:identifier];
 //设置cell的数据
 YYappInfo *appinfo=self.apps[indexPath.row];
 //设置代理
 cell.delegate=self;
 cell.app=appinfo;
 //返回cell return cell;
}
复制代码
目录
相关文章
|
25天前
|
iOS开发 开发者
苹果iOS App Store上架操作流程详解:从开发者账号到应用发布
很多开发者在开发完iOS APP、进行内测后,下一步就面临上架App Store,不过也有很多同学对APP上架App Store的流程不太了解,下面我们来说一下iOS APP上架App Store的具体流程,如有未涉及到的部分,大家可以及时咨询,共同探讨。
|
27天前
|
安全 数据安全/隐私保护 iOS开发
iOS App 上架流程图文教学
在上架App 之前必须先准备好开发者帐号,但申请开发者帐号因法兰克早在之前已经申请好了,故就跳过此步骤,直接从产生凭证到上传App开始讲起。首先,要将自己辛苦写好的App 送审的话,则要依序做完下列几件事情即可。
|
27天前
|
存储 iOS开发 开发者
如何在上架App之前设置证书并上传应用
在上架App之前想要进行真机测试的同学,请查看《iOS- 最全的真机测试教程》,里面包含如何让多台电脑同时上架App和真机调试。
|
27天前
|
安全 开发工具 数据安全/隐私保护
如何将应用程序发布到 App Store
如何将应用程序发布到 App Store
|
21天前
|
机器学习/深度学习 算法 数据可视化
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
33 0
|
3天前
|
iOS开发 开发者
iOS App 上架指南及关键建议
上架App Store是将iOS应用提交申请并上线的过程,旨在让应用在App Store上展示,吸引用户并获取流量。本文将介绍iOS上架的整体流程,并提供一些建议和注意事项。
|
7天前
|
监控 API Swift
用Swift开发iOS平台上的上网行为管理监控软件
在当今数字化时代,随着智能手机的普及,人们对于网络的依赖日益增加。然而,对于一些特定场景,如家庭、学校或者企业,对于iOS设备上的网络行为进行管理和监控显得尤为重要。为了满足这一需求,我们可以利用Swift语言开发一款iOS平台上的上网行为管理监控软件。
36 2
|
25天前
|
iOS开发 开发者 UED
2023年iOS App Store上架流程详解(上)
在2023年,随着苹果发布机制的微调,有些关于iOS App上架流程的资料已经过时。本文将根据最新的要求和经验,详细介绍iOS App上架的流程。
|
27天前
|
存储 数据安全/隐私保护 开发者
图文详解丨iOS App上架全流程及审核避坑指南
App Store作为苹果官方的应用商店,审核严格周期长一直让用户头疼不已,很多app都“死”在了审核这一关,那我们就要放弃iOS用户了吗?当然不是!本期我们从iOS app上架流程开始梳理,详细了解下iOS app上架的那些事。
|
27天前
|
安全 网络安全 数据安全/隐私保护
iOS App的打包和上架流程
iOS App的打包和上架流程

相关产品

  • 云迁移中心