标签:
您好。相信您对新浪微博界面有所了解。
对此,我们需要对UITableView有所了解的。 下列我们通过一些代码来渐渐拓展我们的视野范围。
从界面可以看出上面是一个UINavigationBar和下面是一个UITabBar。至于这两部分,我会在后来把这小项目写上去。现在我们来了解下UITableView 的使用。
这是一个分组的列表 UITableViewStyleGroup 。
typedef NS_ENUM(NSInteger, UITableViewStyle) {
UITableViewStylePlain, // regular table view
UITableViewStyleGrouped // preferences style table view
};首先我们需要创建两个简单的模型并继承NSObject ,一个是JHCommonGroup和JHCommonItem分别代表的所有对应的组和对应的行
里面拥有着自己的特有属性
JHCommonItem类:
@interface JHCommonItem : NSObject /** 图标*/ @property(nonatomic,copy) NSString *icon; /** 标题*/ @property(nonatomic,copy) NSString *title; /** 子标题*/ @property(nonatomic,copy) NSString *subtitle; +(instancetype)itemWithTitle:(NSString *)title icon:(NSString *)icon; +(instancetype)itemWithTitle:(NSString *)title;.m文件:
@implementation JHCommonItem
+(instancetype)itemWithTitle:(NSString *)title icon:(NSString *)icon
{
JHCommonItem *item = [[JHCommonItem alloc] init];
item.title = title;
item.icon = icon;
return item;
}
+(instancetype)itemWithTitle:(NSString *)title
{
return [self itemWithTitle:title icon:nil];
}
JHCommonGroup类:
@interface JHCommonGroup : NSObject /** 组头*/ @property (nonatomic,copy) NSString *header; /** 组尾*/ @property (nonatomic,copy) NSString *footer; /** 这组的所有行模型(数组中存放的都是JHCommonItem模型) */ @property (nonatomic,strong) NSArray *items; +(instancetype)group;
JHCommonCell类:
#import "JHCommonCell.h"
#include "JHCommonGroup.h"
#include "JHCommonItem.h"
@implementation JHCommonCell
+(instancetype)cellWithTableView:(UITableView *)tableView
{
static NSString *ID = @"cell";
JHCommonCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
if (!cell) {
cell = [[JHCommonCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:ID];
}
return cell;
}
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// 设置标题的字体
self.textLabel.font = [UIFont boldSystemFontOfSize:15];
self.detailTextLabel.font = [UIFont systemFontOfSize:12];
}
return self;
}
-(void)layoutSubviews
{
[super layoutSubviews];
self.detailTextLabel.x = CGRectGetMaxX(self.textLabel.frame) +3;
}
-(void)setItem:(JHCommonItem *)item
{
self.imageView.image = [UIImage imageNamed:item.icon];
self.textLabel.text = item.title;
self.detailTextLabel.text = item.subtitle;
}
@end
一些模型类定义好后,我们的工作还是需要放在控制器身上,由于我们定义了一个JHDiscoverViewController的控制器并继承至UITableViewController.所以内部已经帮我们设置好的代理和数据源方法(UITableViewDelegate,UITableViewDataSource), 还有还要了解@required和@optional的含义。
#import "JHDiscoverViewController.h"
#import "JHSearchBar.h"
#import "JHCommonCell.h"
#import "JHCommonItem.h"
#import "JHCommonGroup.h"
@interface JHDiscoverViewController ()
@property (nonatomic,strong) NSMutableArray *groups;
@end
@implementation JHDiscoverViewController
-(NSMutableArray *)groups
{
if (_groups == nil) {
self.groups = [NSMutableArray array];
}
return _groups;
}
- (id)init
{
return [self initWithStyle:UITableViewStyleGrouped];
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.tableView.backgroundColor = JHColor(211, 211, 211);
// 创建搜索框对象
JHSearchBar *searchBar = [JHSearchBar searchBar];
searchBar.width = 300;
searchBar.height = 30;
self.navigationItem.titleView = searchBar;
// 初始化数据
[self setupgroup];
}
-(void)setupgroup
{
[self group0];
[self group1];
[self group2];
}
-(void)group0
{
JHCommonGroup *group = [JHCommonGroup group];
[self.groups addObject:group];
JHCommonItem *hotStatus = [JHCommonItem itemWithTitle:@"热门微博" icon:@"hot_status"];
hotStatus.subtitle = @"笑话,娱乐,神最右都搬到这啦";
JHCommonItem *findPeople = [JHCommonItem itemWithTitle:@"找人" icon:@"find_people"];
findPeople.subtitle = @"名人、有意思的人尽在这里";
group.items = @[hotStatus, findPeople];
}
-(void)group1
{
JHCommonGroup *group = [JHCommonGroup group];
[self.groups addObject:group];
// 2.设置组的所有行数据
JHCommonItem *gameCenter = [JHCommonItem itemWithTitle:@"游戏中心" icon:@"game_center"];
JHCommonItem *near = [JHCommonItem itemWithTitle:@"周边" icon:@"near"];
JHCommonItem *app = [JHCommonItem itemWithTitle:@"应用" icon:@"app"];
group.items = @[gameCenter, near, app];
}
-(void)group2
{
JHCommonGroup *group = [JHCommonGroup group];
[self.groups addObject:group];
// 2.设置组的所有行数据
JHCommonItem *video = [JHCommonItem itemWithTitle:@"视频" icon:@"video"];
JHCommonItem *music = [JHCommonItem itemWithTitle:@"音乐" icon:@"music"];
JHCommonItem *movie = [JHCommonItem itemWithTitle:@"电影" icon:@"movie"];
JHCommonItem *cast = [JHCommonItem itemWithTitle:@"播客" icon:@"cast"];
cast.subtitle = @"(10)";
JHCommonItem *more = [JHCommonItem itemWithTitle:@"更多" icon:@"more"];
group.items = @[video, music, movie, cast, more];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return self.groups.count;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
JHCommonGroup *group = self.groups[section];
return group.items.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{
JHCommonCell *cell = [JHCommonCell cellWithTableView:tableView];
JHCommonGroup *group = self.groups[indexPath.section];
//传递模型数据
cell.item = group.items[indexPath.row];
return cell;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/ios_cjh/article/details/48020261