一、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. 符合语言习惯的 Python 优雅编程技巧

    Python最大的优点之一就是语法简洁,好的代码就像伪代码一样,干净.整洁.一目了然.要写出 Pythonic(优雅的.地道的.整洁的)代码,需要多看多学大牛们写的代码,github 上有很多非常优秀 ...

  2. java 字节流和字符流转换类InputStreamReader,OutPutStreamReader

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2pjMjExMzIy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...

  3. java 多线程 day17 Exchanger

    import java.util.concurrent.Exchanger;import java.util.concurrent.ExecutorService;import java.util.c ...

  4. monkey基础学习

    原文地址https://blog.csdn.net/beyond_f/article/details/78543070 一.Monkey测试简介 Monkey测试是Android平台自动化测试的一种手 ...

  5. The adidas NMD Singapore is one of the brands top selling

    Like pointed out, we've two adidas NMD Singapore releases using the first arriving Blue and Black as ...

  6. FILE 文件的使用 (VC、BCB、Qt)

    FILE * fp ;AnsiString filePath="";fp= fopen(filePath.c_str(),"wb");//第二个参数是文件打开方 ...

  7. NodeJS学习笔记五

    Promise简介 所谓Promise,就是一个对象,用来传递异步操作的消息. Promise对象有以下两个特点. (1)对象的状态不受外界影响.Promise对象代表一个异步操作,有三种状态:Pen ...

  8. Quick中require与import的区别

    载入一个模块 import() 与 require() 功能相同,但具有一定程度的自动化特性. 假设我们有如下的目录结构: app/ app/classes/ app/classes/MyClass. ...

  9. 20155310 2016-2017-2 《Java程序设计》第七周学习总结

    20155310 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 第十三章 时间与日期 认识时间与日期 •时间的度量 •GMT(格林威治标准时间):现在不是标 ...

  10. Aliexpress API 授权流程整理(转载)

    前言 我零零总总用了好几个月的时间,写了一个自用的小程序,从 Aliexpress 上抓取订单的小程序.刚开始写的时候,该API还没有开放,而且没有订单相关的功能.我完全是通过模拟用户在网页上的操作来 ...