tableviewios学习资料

MVC模式下通过xib自定义cell

2015-10-15  本文已影响473人  与佳期

前言

我会分两篇文章来总结UITableView的简单使用,这一篇总结xib方式自定义UITableViewCell,并且采用MVC模式为controller瘦身

本篇文章就以Demo中 图书馆->我的借阅 的界面为例

首先看一下我们最终实现的样子

屏幕快照 2015-10-15 21.50.01.png

通过xib自定义cell

Borrow.m中重写init方法
- (id)initWithDict:(NSDictionary *)dict {
if (self = [super init]) {
// 解析字典属性
self.image = dict[@"image"];
self.title = dict[@"title"];
self.author = dict[@"author"];
self.publish = dict[@"publish"];
self.number = dict[@"number"];
self.place = dict[@"place"];
self.time = dict[@"time"];
self.bill = dict[@"bill"];
}
return self;
}
并在Borrow.m中提供一个类方法
+ (id)borrowWithDict:(NSDictionary *)dict {
return [[self alloc] initWithDict:dict];
}

注:setBorrow方法中若是直接加载封面图片,界面会卡顿。所以这里采用第三方库SDWebImage中的方法,如果不想使用第三方库,也可以采用下面的多线程方法:
// 封面
_image.image = [UIImage imageNamed:@"book.png"]; // 放置一张加载完成前的默认图片
// 1.获取一个全局队列
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
// 2.把任务添加到队列中执行
dispatch_async(queue, ^{
// 3.从网络上下载图片
NSURL *urlstr = [NSURL URLWithString:borrow.image];
NSData *data = [NSData dataWithContentsOfURL:urlstr];
UIImage *image = [UIImage imageWithData:data];
// 4.回到主线程,展示图片
dispatch_async(dispatch_get_main_queue(), ^{
_image.image = image;
});
});

BorrowViewController中显示的内容

遵从MVC模式,controller瘦身成功,减轻了controller的工作量,交给它的模型去做。

后记

小白出手,请多指教。
如言有误,还望斧正!

上一篇下一篇

猜你喜欢

热点阅读