一、Model

 //
// BWApp.h
// IOS_0112_应用管理
//
// Created by ma c on 16/1/12.
// Copyright (c) 2016年 博文科技. All rights reserved.
// #import <Foundation/Foundation.h> @interface BWApp : NSObject @property (nonatomic, copy) NSString *size;
@property (nonatomic, copy) NSString *download;
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *icon;
//标记是否被下载过
@property (nonatomic, assign) BOOL isDownloaded; - (instancetype)initWithDict:(NSDictionary *)dict;
+ (instancetype)appWithDict:(NSDictionary *)dict; @end //
// BWApp.m
// IOS_0112_应用管理
//
// Created by ma c on 16/1/12.
// Copyright (c) 2016年 博文科技. All rights reserved.
// #import "BWApp.h" @implementation BWApp - (instancetype)initWithDict:(NSDictionary *)dict
{
if (self = [super init]) {
[self setValuesForKeysWithDictionary:dict];
}
return self;
} + (instancetype)appWithDict:(NSDictionary *)dict
{
return [[self alloc] initWithDict:dict];
} @end

二、View

 #import <UIKit/UIKit.h>
@class BWAppCell;
@protocol appCellDelegate <NSObject> - (void)btnDownloadClick:(BWAppCell *)appCell; @end @class BWApp;
@interface BWAppCell : UITableViewCell @property (nonatomic, strong) BWApp *app;
@property (nonatomic, strong) id<appCellDelegate> delegate; @end //
// BWAppCell.m
// IOS_0112_应用管理
//
// Created by ma c on 16/1/12.
// Copyright (c) 2016年 博文科技. All rights reserved.
// #import "BWAppCell.h"
#import "BWApp.h" @interface BWAppCell ()
@property (weak, nonatomic) IBOutlet UIImageView *appIcon;
@property (weak, nonatomic) IBOutlet UILabel *appName;
@property (weak, nonatomic) IBOutlet UILabel *appDesc; @property (weak, nonatomic) IBOutlet UIButton *appDownload;
- (IBAction)appDownload:(id)sender; @end @implementation BWAppCell - (void)setApp:(BWApp *)app
{
_app = app; //给子控件设置数据
self.appIcon.image = [UIImage imageNamed:_app.icon];
self.appName.text = _app.name;
self.appDesc.text = [NSString stringWithFormat:@"大小:%@ | 下载量:%@",_app.size,_app.download]; //更新下载按钮状态
if (app.isDownloaded) {
self.appDownload.enabled = NO;
}
else
self.appDownload.enabled = YES; } #pragma mark - 下载按钮点击事件
- (IBAction)appDownload:(id)sender {
//1.禁用按钮
self.appDownload.enabled = NO;
//已经被点击过了
self.app.isDownloaded = YES;
if ([self.delegate respondsToSelector:@selector(btnDownloadClick:)]) {
[self.delegate btnDownloadClick:self];
}
} - (void)awakeFromNib {
// Initialization code
} - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated]; // Configure the view for the selected state
} @end

三、Controller

 //
// ViewController.m
// IOS_0112_应用管理
//
// Created by ma c on 16/1/12.
// Copyright (c) 2016年 博文科技. All rights reserved.
// #import "ViewController.h"
#import "BWApp.h"
#import "BWAppCell.h"
@interface ViewController ()<appCellDelegate> @property (nonatomic, strong) NSArray *appArray; @end @implementation ViewController #pragma mark - appCellDelegate代理方法
- (void)btnDownloadClick:(BWAppCell *)appCell
{
//1.创建一个Label
UILabel *lblMsg = [[UILabel alloc] initWithFrame:CGRectMake(, (self.view.frame.size.height - )/, , )];
lblMsg.text = @"正在下载...";
lblMsg.textAlignment = NSTextAlignmentCenter;
lblMsg.backgroundColor = [UIColor blackColor];
lblMsg.textColor = [UIColor redColor];
//设置透明度
lblMsg.alpha = 0.0;
//设置圆角
lblMsg.layer.cornerRadius = ;
lblMsg.layer.masksToBounds = YES;
//[self.view addSubview:lblMsg]; [[[UIApplication sharedApplication] keyWindow] addSubview:lblMsg]; //动画方式显示Label
// [UIView animateWithDuration:1.0 animations:^{
// lblMsg.alpha = 0.6;
// }]; [UIView animateWithDuration:1.0 animations:^{
lblMsg.alpha = 0.6;
} completion:^(BOOL finished) {
//动画执行完毕以后
//再开启一个新动画
[UIView animateWithDuration:1.0 delay:0.5 options:UIViewAnimationOptionCurveLinear animations:^{
lblMsg.alpha = ;
} completion:^(BOOL finished) {
[lblMsg removeFromSuperview];
}];
}];
} #pragma mark - 懒加载
- (NSArray *)appArray
{
if (_appArray == nil) {
NSString *path = [[NSBundle mainBundle] pathForResource:@"apps_full.plist" ofType:nil];
NSArray *arrDict = [NSArray arrayWithContentsOfFile:path];
NSMutableArray *arrModel = [NSMutableArray array]; for (NSDictionary *dict in arrDict) {
BWApp *app = [BWApp appWithDict:dict];
[arrModel addObject:app];
}
_appArray = arrModel;
}
return _appArray;
} #pragma mark - viewDidLoad
- (void)viewDidLoad {
[super viewDidLoad];
//NSLog(@"%@",self.appArray);
self.tableView.rowHeight = ;
}
#pragma mark - 数据源方法
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return ;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.appArray.count;
} - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//1.获取数据模型
BWApp *model = self.appArray[indexPath.row];
//2.通过storyboard中cell模板创建单元格
static NSString *ID = @"app_cell";
BWAppCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
//3.设置数据
cell.app = model;
cell.delegate = self;
//4.返回数据
return cell;
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} @end

iOS UI-应用管理(使用Cell模板)的更多相关文章

  1. [Xcode 实际操作]一、博主领进门-(1)iOS项目的创建和项目模板的介绍

    目录:[Swift]Xcode实际操作 本文将演示iOS项目的创建和项目模板的介绍. [Create a new Xcode project]创建一个新的项目. 在弹出的模板窗口中,显示了所有的项目模 ...

  2. iOS ARC内存管理

    iOS的内存管理机制,只要是iOS开发者,不管多长的时间经验,都能说出来一点,但是要深入的理解.还是不简单的.随着ARC(自动管理内存)的流行.iOS开发者告别了手动管理内存的复杂工作.但是自动管理内 ...

  3. Unity3d:UI面板管理整合进ToLua

    本文基于 https://github.com/chiuan/TTUIFramework https://github.com/jarjin/LuaFramework_UGUI 进行的二次开发,Tha ...

  4. 理解 iOS 的内存管理

    远古时代的故事 那些经历过手工管理内存(MRC)时代的人们,一定对 iOS 开发中的内存管理记忆犹新.那个时候大约是 2010 年,国内 iOS 开发刚刚兴起,tinyfool 大叔的大名已经如雷贯耳 ...

  5. iOS10 UI教程管理层次结构

    iOS10 UI教程管理层次结构 iOS10 UI教程管理层次结构,在一个应用程序中,如果存在多个层次结构,就需要对这些层次结构进行管理.在UIView类中提供了可以用来管理层次结构的方法,让开发者可 ...

  6. [IOS]IOS UI指南

    [IOS]IOS UI指南 众所周知,IOS的界面设计,越来越流行,可以说都形成了一个标准,搜集了一些资料,供自己以后学习使用! iOS Human Interface Guidelines (中文翻 ...

  7. IOS UI 第八篇:基本UI

    实现图片的滚动,并且自动停止在每张图片上     - (void)viewDidLoad{    [super viewDidLoad]; UIScrollView *scrollView = [[U ...

  8. iOS之内存管理(ARC)

    iOS的内存管理,相信大家都不陌生,之前是使用的MRC,由开发人员手动来管理内存,后来使用了ARC,来由系统管理内存.本文主要讲讲Autorelease,Core Foundation对象在内存管理方 ...

  9. 国外IOS UI指南

    国外IOS UI指南 众所周知,IOS的界面设计,越来越流行,可以说都形成了一个标准,搜集了一些资料,供自己以后学习使用! iOS Human Interface Guidelines (中文翻译) ...

随机推荐

  1. Oracle Schema Objects——Synonyms

    Oracle Schema Objects 同义词 同义词 = 表的别名. 现在假如说有一张数据表的名称是“USER1.student”,而现在又为这张数据表起了一个“USER1”的名字,以后就可以直 ...

  2. 使用log4net做应用程序全局日志记录保存在数据库中

    几乎所有的大型应用都会有自己的用于跟踪调试的API.因为一旦程序被部署以后,就不太可能再利用专门的调试工具了.然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题.经验表明,日志记录往往 ...

  3. HTTP监视器charles入门使用教程分享---http/s packet monitors---ubuntu installation

    charles --usage http://www.cnblogs.com/chenlogin/p/5849471.html 按照Charles的提示,PC打开 chls.pro/ssl下载得到一个 ...

  4. Unity-DLL反编译学习

        本文由博主(SunboyL)原创,转载请注明出处:http://www.cnblogs.com/xsln/p/DLL_DeCompilation.html     在Unity实际开发过程中, ...

  5. IETF国标查询

    IETF官网 https://www.ietf.org/ rfc国标官网 https://www.ietf.org/standards/rfcs/ rfc国标查询 https://www.rfc-ed ...

  6. 2006 - MySQL server has gone away

    mysql出现ERROR : (2006, 'MySQL server has gone away') 的问题意思就是指client和MySQL server之间的链接断开了. 造成这样的原因一般是s ...

  7. VS2010/MFC编程入门之二十九(常用控件:列表视图控件List Control 下)

    上一节是关于列表视图控件List Control的上半部分,简单介绍了列表视图控件,其通知消息的处理和有关结构体的定义.本节继续讲解下半部分,包括列表视图控件的创建.CListCtrl类的主要成员函数 ...

  8. HDU1087

    /*记忆化dfs+dp,因为每次最多走k步,所以上下左右的方向有所扩展, dp[i][j]存的是从dp[i][j]出发能吃的最大个数*/ #include<stdio.h> #includ ...

  9. TED #07# How to inspire every child to be a lifelong reader

    Alvin Irby: How to inspire every child to be a lifelong reader Prepare elementarykitchen tableforced ...

  10. Python面试题之Python反射详解

    0x00 前言 反射,可以理解为利用字符串的形式去对象中操作成员属性和方法 反射的这点特性让我联想到了exec函数,也是把利用字符串的形式去让Python解释器去执行命令 Python Version ...