iOS UI-应用管理(使用Cell模板)
一、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模板)的更多相关文章
- [Xcode 实际操作]一、博主领进门-(1)iOS项目的创建和项目模板的介绍
目录:[Swift]Xcode实际操作 本文将演示iOS项目的创建和项目模板的介绍. [Create a new Xcode project]创建一个新的项目. 在弹出的模板窗口中,显示了所有的项目模 ...
- iOS ARC内存管理
iOS的内存管理机制,只要是iOS开发者,不管多长的时间经验,都能说出来一点,但是要深入的理解.还是不简单的.随着ARC(自动管理内存)的流行.iOS开发者告别了手动管理内存的复杂工作.但是自动管理内 ...
- Unity3d:UI面板管理整合进ToLua
本文基于 https://github.com/chiuan/TTUIFramework https://github.com/jarjin/LuaFramework_UGUI 进行的二次开发,Tha ...
- 理解 iOS 的内存管理
远古时代的故事 那些经历过手工管理内存(MRC)时代的人们,一定对 iOS 开发中的内存管理记忆犹新.那个时候大约是 2010 年,国内 iOS 开发刚刚兴起,tinyfool 大叔的大名已经如雷贯耳 ...
- iOS10 UI教程管理层次结构
iOS10 UI教程管理层次结构 iOS10 UI教程管理层次结构,在一个应用程序中,如果存在多个层次结构,就需要对这些层次结构进行管理.在UIView类中提供了可以用来管理层次结构的方法,让开发者可 ...
- [IOS]IOS UI指南
[IOS]IOS UI指南 众所周知,IOS的界面设计,越来越流行,可以说都形成了一个标准,搜集了一些资料,供自己以后学习使用! iOS Human Interface Guidelines (中文翻 ...
- IOS UI 第八篇:基本UI
实现图片的滚动,并且自动停止在每张图片上 - (void)viewDidLoad{ [super viewDidLoad]; UIScrollView *scrollView = [[U ...
- iOS之内存管理(ARC)
iOS的内存管理,相信大家都不陌生,之前是使用的MRC,由开发人员手动来管理内存,后来使用了ARC,来由系统管理内存.本文主要讲讲Autorelease,Core Foundation对象在内存管理方 ...
- 国外IOS UI指南
国外IOS UI指南 众所周知,IOS的界面设计,越来越流行,可以说都形成了一个标准,搜集了一些资料,供自己以后学习使用! iOS Human Interface Guidelines (中文翻译) ...
随机推荐
- spring boot实战(第一篇)第一个案例
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] spring boot实战(第一篇)第一个案例 前言 写在前面的话 一直想将spring boot相关内容写成一个系列的 ...
- 理论实践:循序渐进理解AWR细致入微分析性能报告
1. AWR 概述 Automatic Workload Repository(AWR) 是10g引入的一个重要组件.在里面存贮着近期一段时间内(默认是7天)数据库活动状态的详细信息. AWR 报告是 ...
- ubuntu安装conda
https://blog.csdn.net/menghuanbeike/article/details/79138651 你需要前往Anaconda的官网看下目前的下载地址: https://www. ...
- Spring、springmvc配置
首先把三个文件copy到resources目录下: 然后把这两个文件copy到WEB-INF下: 在datasource.properties中增加: db.driverLocation=C:\\Us ...
- 微软威胁情报中心总经理的十句话——From John Lambert——太精辟了.......
微软威胁情报中心总经理 John Lambert的十句话 1. What is the most ...
- atime、mtime、ctime的区别及如何降低atime更新 mount时的option noatime
atime.mtime.ctime的区别及如何降低atime更新 mount时的option noatime http://mp.weixin.qq.com/s?__biz=MzA3MzYwNjQ3 ...
- in 和 or 的效率问题
select * from table where col in (2,3,4,5,6) select * from table where col=2 or col=3 or col=4 or co ...
- webdriver js点击无法点击的元素
原文地址https://blog.csdn.net/galen2016/article/details/56847545 [WebDriver]调用JavaScript 一.WebDriver 提供了 ...
- java基础语法this关键字
未经允许,禁止转载!!!!!!!! this关键词在java里面很重要,想了解清楚this就必须对 类:对象:this:成员变量:方法:构造方法 都了解清楚. 一.使用this调用本类中的成员变量( ...
- 2016-ccf-data-mining-competition 搜狗用户画像构建
想法1: 分成147(3*7*7)类, 后来觉得这样效果不好,后来看了看竞赛要求的也是分别预测,分别评分,而不是一次就把3类的标签都给出 所有后来我们改进了当时的想法,决定对年龄,性别,学历进 ...