iOS实用编程技巧UITableViewiOS开发之旅

快速搭建APP设置界面

2015-09-24  本文已影响984人  _会飞的鱼

基于 快速搭建一个app项目的情况下 快速搭建一个设置界面
在此 我就在第四个控制器里面实现 第四个控制器 继承于 UITablViewConroller

一、新建模型文件

Paste_Image.png

模型的设计

(LLGroupItem)组模型设计

@interface LLGroupItem : NSObject
//** 头部标题 headerTitle */
@property (nonatomic ,copy) NSString *headerTitle;

//** 尾部标题 headerTitle */
@property (nonatomic ,copy) NSString *footerTitle;

//** 一组中有几个元素 itemsArray */
@property (nonatomic ,strong) NSArray *itemsArray;

@end

行模型的设计(LLSettingItem.h),分析每一行的所有元素:比如只有标题和图片

@interface LLSettingItem : NSObject
//** 标题 title */
@property (nonatomic ,copy) NSString *title;

//** 图标 icon */
@property (nonatomic ,copy) NSString *icon;

+ (instancetype)itemWithTitle:(NSString *)title icon:(NSString *)icon;

//加方法 快速
+ (instancetype)settingItem;
@end

LLSettingItem.m 里面

如下实现方法
+ (instancetype)itemWithTitle:(NSString *)title icon:(NSString *)icon
{
LLSettingItem *item = [self settingItem];
item.title = title;
item.icon = icon;
return item;
}
+ (instancetype)settingItem
{
return [[self alloc] init];
}

来到控制器里面 做如下操作

#import "LLFourViewController.h"
#import "LLGroupItem.h"
#import "LLSettingItem.h"
@interface LLFourViewController ()<UITabBarDelegate,UITableViewDataSource>

//当前界面的数据源 用来存储分组模型
 @property (nonatomic ,strong) NSMutableArray *groupArray;

@end

@implementation LLFourViewController

    //groupArray懒加载
    - (NSMutableArray *)groupArray
 {
    if (!_groupArray) {
        _groupArray = [NSMutableArray array];
    }
    return _groupArray;
  }

- (instancetype)init
 {
    // 设置tableView的分组样式为Group样式
    return [self initWithStyle:UITableViewStyleGrouped];
}
- (void)viewDidLoad {
[super viewDidLoad];

//添加第一组模型
[self group1];

//添加第二组模型
[self group2];

//添加第三组模型
[self group3];

}

 - (void)group1
{
//创建组模型
LLGroupItem *group0 = [[LLGroupItem alloc] init];

//创建行模型 图片我就随便用TabBar的图片代替
LLSettingItem *item = [LLSettingItem itemWithTitle:@"推送设置" icon:@"TabBar4"];
LLSettingItem *item1 = [LLSettingItem itemWithTitle:@"涨跌显示" icon:@"TabBar2"];
LLSettingItem *item2 = [LLSettingItem itemWithTitle:@"清除缓存" icon:@"TabBar1"];

//保存模型数组
group0.itemsArray = @[item,item1,item2];

//把组模型保存到groupArray数组中
[self.groupArray addObject:group0];

}

- (void)group2
{
//创建组模型
LLGroupItem *group1 = [[LLGroupItem alloc] init];

//创建行模型
LLSettingItem *item = [LLSettingItem itemWithTitle:@"免责声明" icon:@"TabBar1"];
LLSettingItem *item1 = [LLSettingItem itemWithTitle:@"常见问题" icon:@"TabBar2"];
LLSettingItem *item2 = [LLSettingItem itemWithTitle:@"关于我们" icon:@"TabBar3"];

//保存模型数组
group1.itemsArray = @[item,item1,item2];

//把组模型保存到groupArray数组中
[self.groupArray addObject:group1];
}

- (void)group3
{
//创建组模型
LLGroupItem *group2 = [[LLGroupItem alloc] init];

//创建行模型
LLSettingItem *item = [LLSettingItem itemWithTitle:@"推荐给朋友一起来赚钱吧" icon:@"TabBar4"];
LLSettingItem *item1 = [LLSettingItem itemWithTitle:@"退出当前账号" icon:@"TabBar5"];
//保存模型数组
group2.itemsArray = @[item,item1];

//把组模型保存到groupArray数组中
[self.groupArray addObject:group2];
}

 #pragma mark - UITableView代理方法

/**
 *  返回有多少组的代理方法
 */
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

    return self.groupArray.count;
}

/**
 *  返回每组有多少行的代理方法
 */
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

LLGroupItem *group = self.groupArray[section];
return group.itemsArray.count;
}

 /**
 *  返回每一行Cell的代理方法
 */
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

// 设置Cell的重用标识
static NSString *ID = @"cell";

// 去缓存池中取Cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];

// 若取不到便创建一个带重用标识的Cell
if (cell == nil) {
    cell  = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
}

// 设置Cell右边的小箭头
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

//  取出组模型
LLGroupItem *group = self.groupArray[indexPath.section];

//  根据组模型取出行(Cell)模型
LLSettingItem *item = group.itemsArray[indexPath.row];

//  根据行模型的数据赋值
cell.textLabel.text = item.title;

// icon
cell.imageView.image = [UIImage imageNamed:item.icon];
return cell;
}

@end

大功告成

如图

Paste_Image.png

点击响应 回头更新上

上一篇 下一篇

猜你喜欢

热点阅读