iOS 结构简单清晰的 设置页面
这个是也是看了人家的代码,觉得甚是简单清晰,也是比较容易扩展。拿来学习一下
效果展示:

@interface HFSettingGroup : NSObject @property (nonatomic, strong) NSString *header; // 头部标题 @property (nonatomic, strong) NSString *footer; // 尾部标题 @property (nonatomic, strong) NSArray *items; // 中间的条目 @end
通常有的 就是 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 结构简单清晰的 设置页面的更多相关文章
- 【iOS】跳转到设置页面
iOS8.0以后有效 定位服务 定位服务有很多APP都有,如果用户关闭了定位,那么,我们在APP里面可以提示用户打开定位服务.点击到设置界面设置,直接跳到定位服务设置界面.代码如下: 1 2 3 4 ...
- iOS开发UI篇—iOS开发中三种简单的动画设置
iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView b ...
- iOS 从应用中跳转至系统设置页面里的多种设置页面
我们在开发app过程中很多时候会需要设置系统权限,这时就需要在应用中跳转至系统设置页面权限设置页面,以下是自己结合网上的资料总结的一些经验: 直接从应用中跳转至系统设置中这个应用的权限设置页面 NSU ...
- iOS 设置页面的代码编写
突然觉得好久没有更新博客了,今天就想把自己的项目中的一些功能和常用的模块写出来给大家参考一下... 这是我的二个项目中的不同的设置界面,第一个设置的那个按钮是 用的开关switch ,当然这个就容易一 ...
- ios开发中APP底部上滑不能调出如WiFi、蓝牙、播放等的设置页面的解决的方法
在开发的APP中我们通常通过手动底部上滑来调出WiFi.蓝牙.飞行模式等的设置页面.有时我们开发的APP无法调出. 解决的方法: 进入iPhone "设置" --> &quo ...
- iOS 实现简单的界面切换
以下是在iOS中最简单的界面切换示例.使用了多个Controller,并演示Controller之间在切换界面时的代码处理. 实现的应用界面: 首先,创建一个window-based applicat ...
- ffplay.c函数结构简单分析(画图)
最近重温了一下FFplay的源代码.FFplay是FFmpeg项目提供的播放器示例.尽管FFplay只是一个简单的播放器示例,它的源代码的量也是不少的.之前看代码,主要是集中于某一个"点&q ...
- ffplay.c函数结构简单分析(绘图)
近期重温了一下FFplay的源码. FFplay是FFmpeg项目提供的播放器演示样例.虽然FFplay不过一个简单的播放器演示样例,它的源码的量也是不少的. 之前看代码,主要是集中于某一个" ...
- 简单的Slony-I设置实例 II
磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL集群方案相关索引页 回到顶级页面:PostgreSQL索引页 接前面例子, 简单的Slony-I设置实例 这次我 ...
随机推荐
- Unity3D - 使用TexturePacker打包图集以及NGUI对旋转sprites的支持
作者:EnigmaJJ 博客地址:http://www.cnblogs.com/twjcnblog/ 在Unity中使用NGUI时,为了减少draw call,我们会将美术用到的小图打成一张图集,如图 ...
- IE浏览器上传图片预览兼容(IE 7 8 9 10 11)
$("#file_upload").change(function () { var $file = $(this); ]; var windowURL = window.URL ...
- 非侵入式Ajax
基本准备 首先,新建一个ASP.NET MVC 3的空项目. 然后新增一个Model,代码如下: using System; using System.Collections.Generic; usi ...
- 40-语言入门-40-C小加之随机数
题目地址: http://acm.nyist.net/JudgeOnline/problem.php?pid=255 15 20 32 40 67 89 300 400 代码: #includ ...
- CentOS上使用Squid+Stunnel搭建代理服务器教程
这篇文章主要介绍了CentOS上使用Squid+Stunnel搭建代理服务器教程,同时文中也介绍了用户认证的方法,适合于多用户共同使用代理,这种功能在国内用还是比较exciting的~需要的朋友可以参 ...
- 更新换代----systemctl命令取代chkconfig和service
systemctl命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起. 任务 旧指令 新指令 使某服务自动启动 chkconfig --level 3 ...
- php+redis秒杀
啥都不说了,看代码 前台: 包括开始和结束的秒杀时间,倒计时插件,统一看一遍再去写代码,思路会更清晰. js文件引入一个.min.js和一个插件js(在下面,自己复制吧) // JavaScript ...
- spark+hadoop+sqoop+hive平台bug解决方法
bug集锦 1. hadoop平台datanode无法启动: 原因: 由于多次hdfs namenode -format导致dfs/data/current/version中的cluserID与当前的 ...
- iOS-tableview【终极方案】精准获取webView内容高度,自适应高度
关于WebView内容高度的获取,相信很多人都踩过坑,无法获取到准确高度,导致页面布局出现差错,搜到的资料很多但都无法解决问题,以下是个人经验总结: 项目需求实现H5文章&原生评论效果,文章是 ...
- C++ RTTI的应用
先看下方的代码,我们所处的context在<<< void* pX = (void*)pGiven; >>>处,只知道上面这些类的信息和pX指针,怎么判断pX指向对 ...