这个是也是看了人家的代码,觉得甚是简单清晰,也是比较容易扩展。拿来学习一下

效果展示:

重点有以下2处:
1 .建立groupModel
列清组元素:当前组list 集合, 是否有header 或者 footer  等属性元素
@interface HFSettingGroup : NSObject

@property (nonatomic, strong) NSString *header; // 头部标题

@property (nonatomic, strong) NSString *footer; // 尾部标题

@property (nonatomic, strong) NSArray *items; // 中间的条目

@end
2 .  建立itemModel 
 
列清list 每行的item 都有什么元素

通常有的 就是 icon, title,content  。根据具体问题具体分析处理

添加闭包属性 void (^operation)() 根据具体 didSelectRowAtIndexPath: 触发获取指定回调

如果UI个性化非常明显,应该根据该组的枚举类型定制个人性化

#import <Foundation/Foundation.h>

typedef NS_ENUM(NSInteger, HFSettingItemStyle){
HFSettomgStyleNormal //普通类型
}; @interface HFSettingItem : NSObject @property (nonatomic, assign) HFSettingItemStyle style; //类型style
@property (nonatomic, strong) NSString *icon; //左边图标
@property (nonatomic, strong) NSString *title;
@property (nonatomic, strong) NSString *content; // 描述
//具体样式的设置 如果格式不复杂 可区分成枚举Type 归类UI形式 这里UI有点复杂 不用Type
@property (nonatomic, strong) NSNumber *isRedPointHidden; //代表当前是否未读
@property (nonatomic, strong) NSNumber *isLineHidden; //是否展示底部线
@property (nonatomic, strong) NSNumber *isArrowHidden; //是否展示箭头
/** cell上相关的触发事件 */
@property (nonatomic, copy) void (^operation)() ; // 点击cell后要执行的操作 /**
创建通用 settingItem @param icon 左边图标
@param title title
@param content content
@return item
*/
+ (id)itemWithIcon:(NSString *)icon title:(NSString *)title content:(NSString *)content; @end

3 .使用举例

- (void)addSectionItems
{
self.groupArrays = [NSMutableArray array];
__weak typeof(self) weakSelf = self;
// 1.1.月经测试
HFSettingItem *test = [HFSettingItem itemWithIcon:nil title:@"月经测试" content:@"未测试"];
//cell点击事件
test.operation = ^{
//TODO: test
NSLog(@"test");
};
// 1.2测试结果
HFSettingItem *result = [HFSettingItem itemWithIcon:nil title:@"测试结果" content:@"平和质"];
result.operation = ^{
//TODO: test
NSLog(@"result");
TestViewController *vc = [TestViewController new];
[weakSelf.navigationController pushViewController:vc animated:YES];
}; HFSettingGroup *group = [[HFSettingGroup alloc] init];
group.header = @"第一组";
group.items = @[test,result];
[self.groupArrays addObject:group]; // 2.1意见反馈
HFSettingItem *suggest = [HFSettingItem itemWithIcon:nil title:@"意见反馈" content:nil];
suggest.operation = ^{
NSLog(@"suggest");
TestViewController *vc = [TestViewController new];
[weakSelf.navigationController pushViewController:vc animated:YES];
}; HFSettingGroup *group1 = [[HFSettingGroup alloc] init];
group1.items = @[suggest];
group1.header = @"第二组";
[self.groupArrays addObject:group1];
}

iOS 结构简单清晰的 设置页面的更多相关文章

  1. 【iOS】跳转到设置页面

    iOS8.0以后有效 定位服务 定位服务有很多APP都有,如果用户关闭了定位,那么,我们在APP里面可以提示用户打开定位服务.点击到设置界面设置,直接跳到定位服务设置界面.代码如下: 1 2 3 4 ...

  2. iOS开发UI篇—iOS开发中三种简单的动画设置

    iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView b ...

  3. iOS 从应用中跳转至系统设置页面里的多种设置页面

    我们在开发app过程中很多时候会需要设置系统权限,这时就需要在应用中跳转至系统设置页面权限设置页面,以下是自己结合网上的资料总结的一些经验: 直接从应用中跳转至系统设置中这个应用的权限设置页面 NSU ...

  4. iOS 设置页面的代码编写

    突然觉得好久没有更新博客了,今天就想把自己的项目中的一些功能和常用的模块写出来给大家参考一下... 这是我的二个项目中的不同的设置界面,第一个设置的那个按钮是 用的开关switch ,当然这个就容易一 ...

  5. ios开发中APP底部上滑不能调出如WiFi、蓝牙、播放等的设置页面的解决的方法

    在开发的APP中我们通常通过手动底部上滑来调出WiFi.蓝牙.飞行模式等的设置页面.有时我们开发的APP无法调出. 解决的方法: 进入iPhone "设置" --> &quo ...

  6. iOS 实现简单的界面切换

    以下是在iOS中最简单的界面切换示例.使用了多个Controller,并演示Controller之间在切换界面时的代码处理. 实现的应用界面: 首先,创建一个window-based applicat ...

  7. ffplay.c函数结构简单分析(画图)

    最近重温了一下FFplay的源代码.FFplay是FFmpeg项目提供的播放器示例.尽管FFplay只是一个简单的播放器示例,它的源代码的量也是不少的.之前看代码,主要是集中于某一个"点&q ...

  8. ffplay.c函数结构简单分析(绘图)

    近期重温了一下FFplay的源码. FFplay是FFmpeg项目提供的播放器演示样例.虽然FFplay不过一个简单的播放器演示样例,它的源码的量也是不少的. 之前看代码,主要是集中于某一个" ...

  9. 简单的Slony-I设置实例 II

    磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL集群方案相关索引页     回到顶级页面:PostgreSQL索引页 接前面例子, 简单的Slony-I设置实例 这次我 ...

随机推荐

  1. go的sync.Map

    sync.Map这个数据结构是线程安全的(基本类型Map结构体在并发读写时会panic严重错误),它填补了Map线程不安全的缺陷,不过最好只在需要的情况下使用.它一般用于并发模型中对同一类map结构体 ...

  2. 第一百八十七节,jQuery,知问前端--cookie 插件,注册成功后生成cookie,显示登录状态

    jQuery,知问前端--cookie 插件 学习要点: 1.使用 cookie 插件 2.注册直接登录 Cookie 是网站用来在客户端保存识别用户的一种小文件.一般来用库可以保存用户登 录信息.购 ...

  3. Linq to SQL 语法查询(子查询 & in操作 & join )

    var 子查询 = from c in ctx.Customers                    where                        (from o in ctx.Ord ...

  4. Unity3D学习笔记——游戏组件之Mesh(网格组件)

    Mesh:网格组件.主要用于设置外形和外表. Mesh Filter:网格过滤器.就是为游戏对象添加一个外形. 例:设置外形为Sphere  如果获取的网格拥有蒙皮信患,Unity将自动创建一个skn ...

  5. iframe详解

    如何查看是否为iframe *使用FireFox组件firebug->firepath 1.Top Window:可直接定位 2.iframe#i:根据id定位 定位方法: switch_to. ...

  6. OpenCV学习笔记十五:opencv_features2d模块

    一,简介: 该库用于2D特征检测,描述与匹配.

  7. Uva1025 A Spy in the Metro

    #include <iostream> #include <cstring> #include <cstdio> using namespace std; ]; ] ...

  8. java php 3des实现

    php.java.android.ios通用的3des方法:http://blog.csdn.net/zcjwsrf/article/details/47659137 PHP使用3DES算法加密解密字 ...

  9. diango-tinymce富文本编译器

    应用到项目中 在settings.py中为INSTALLED_APPS添加编辑器应用 INSTALLED_APPS = ( ... 'tinymce', ) 在settings.py中添加编辑配置项 ...

  10. Mysql5.5 慢查询 trace的配置(转,针对5.5)

    1. 慢查询有什么用? 它能记录下所有执行超过long_query_time时间的SQL语句, 帮你找到执行慢的SQL, 方便我们对这些SQL进行优化. 2. 如何开启慢查询? 首先我们先查看MYSQ ...