概述

我们在开发的过程中,经常需要重复的写个人中心设置的代码,很多情况下,我们都是通过if(indexPath.row)来判断操作以及要跳转的页面,这样的情况是非常不友好的,尤其是当我们需要调整显示顺序、给点击添加处理等。

通用设置部分界面如下:

   

项目说明

该通用代码,我直接写在了YSKit(点击下载),项目结构如图

类说明:

我们在使用的时候,可以通过两种方式,一种是直接继承于YSMineViewController,另一种是使用数据源方式YSMineCellDataSource

承于YSMineViewController

这种方式简单,本身就是一个tableViewController了,直接设置数据源即可,如:

#import "YSMineDemoViewController.h"
#import "YSMine.h"
#import "YSMineSettingViewController.h" @implementation YSMineDemoViewController - (void)viewDidLoad
{
[super viewDidLoad]; [self setupGroups];
} /**
* 初始化模型数据
*/
- (void)setupGroups
{
[self setupGroup0];
[self setupGroup1];
} - (void)setupGroup0
{
// 1.创建组
YSMineCellGroup *group = [YSMineCellGroup group];
group.header = @"这是第一组头部";
group.footer = @"这是第一组底部";
[self.groups addObject:group]; // 2.设置组的所有行数据
YSMineCellItemArrow *newFriend = [YSMineCellItemArrow itemWithTitle:@"帐号管理"];
newFriend.destVcClass = [YSMineSettingViewController class]; YSMineCellItemArrow *securityAccount = [YSMineCellItemArrow itemWithTitle:@"帐号安全"];
securityAccount.destVcClass = [YSMineSettingViewController class]; group.items = @[newFriend,securityAccount];
} - (void)setupGroup1
{
// 1.创建组
YSMineCellGroup *group = [YSMineCellGroup group];
group.header = @"这是第二组";
[self.groups addObject:group]; // 2.设置组的所有行数据
YSMineCellItemArrow *theme = [YSMineCellItemArrow itemWithTitle:@"主题、背景"];
theme.destVcClass = [YSMineSettingViewController class]; YSMineCellItemArrow *notification = [YSMineCellItemArrow itemWithTitle:@"通知"];
notification.destVcClass = [YSMineSettingViewController class]; group.items = @[theme,notification];
} @end

YSMineCellDataSource数据源方式

使用数据源方式,是因为当前ViewController并不是tableViewController,可能还嵌套着其它页面。因此相对来说设置就会多一步,注意红色框的,设置数据源是一样的。

部分使用代码说明

使用很简单,所有的操作都是设置数据源的时候定义好了

- (void)setupGroup0
{
// 1.创建组
YSMineCellGroup *group = [YSMineCellGroup group];
group.header = @"这是第一组头部";
group.footer = @"这是第一组底部";
[self.groups addObject:group]; // 2.设置组的所有行数据
YSMineCellItemArrow *accountManage = [YSMineCellItemArrow itemWithTitle:@"帐号管理"]; // 右边显示的是箭头
accountManage.destVcClass = [YSMineSettingViewController class]; // 设置点击该Cell要跳转的页面
accountManage.operation = ^(){ // 需要执行的Block
// 需要执行的代码
}; YSMineCellItemSwitch *notifition = [YSMineCellItemSwitch itemWithTitle:@"显示通知"]; // 右边显示的是开头 YSMineCellItemLabel *contactUs = [YSMineCellItemLabel itemWithTitle:@"联系我们"]; // 右边显示的是文本
contactUs.text = @"QQ:123456"; // 设置右边显示的文件 group.items = @[accountManage,notifition,contactUs];
}

上面代码的效果

源代码下载:点击下载

iOS YSMine 通用设置的更多相关文章

  1. iOS开发--应用设置及用户默认设置【1、bundle的运用】

           在iphone里面,应用都会在“设置”里面有个专属的应用设置,选择该菜单界面,用户便可以在其中输入和更改各种选项,协助用户更便捷设置个人喜好与习惯. 在这一节中,希望能通过对捆绑包(bu ...

  2. iOS开发--应用设置及用户默认设置——转载

    [链接]iOS开发--应用设置及用户默认设置[1.bundlehttp://www.jianshu.com/p/6f2913f6b218 在iphone里面,应用都会在“设置”里面有个专属的应用设置, ...

  3. .NET/android/java/iOS AES通用加密解密

    移动端越来越火了,我们在开发过程中,总会碰到要和移动端打交道的场景,比如.NET和android或者iOS的打交道.为了让数据交互更安全,我们需要对数据进行加密传输.今天研究了一下,把几种语言的加密都 ...

  4. 解决iOS中 tabBarItem设置图片(image+title切图在一起)时造成的图片向上偏移

    解决iOS中 tabBarItem设置图片(image+title切图在一起)时造成的图片向上偏移 解决办法1:设置tabBarItem的imageInsets属性 代码示例: childContro ...

  5. iOS开发之设置界面的抽取

    几乎每款app都会有一个设置的界面!!! 那么我们的设置界面到底要怎么写才能最方便使用呢?下面我就来说说我的想法. 1.观察原型图 2.找出相同的东西,目的是抽出一个基类模块,只要我写好了这个控制器, ...

  6. C#/IOS/Android通用加密解密方法

    原文:C#/IOS/Android通用加密解密方法 公司在做移动端ios/android,服务器提供接口使用的.net,用到加密解密这一块,也在网上找了一些方法,有些是.net加密了android解密 ...

  7. 【Openvpn】iOS OpenVPN客户端设置指南(适用iPhone/iPad)

    适用于iPhone/iPad/这些iOS设备.之前iOS使用OpenVPN是需要越狱的,并且是付费第三方应用. 去年开始OpenVPN官方推出了iOS客户端就好用多了,免费也无需越狱. 说明:如果是新 ...

  8. ios 10 访问设置问题

    ios 10 访问设置问题 从ios8之api支持访问设置通过访问UIApplicationOpenSettingsURLString来跳转设置 NSURL*url=[NSURL URLWithStr ...

  9. ios framework通用库的制作

    这篇文章是在史上最完整的iOS DIY framework 详细教程(一)的基础上加以修改 1.新建一个静态库工程: 2:取自己喜欢的名字: 3.删除向导所生成工程中的 Target: 3.删除Tes ...

随机推荐

  1. 了解 XSS 攻击原理

    在了解 XSS 之前必须知道『网站登入(Session)』的原理 简单的说当会员成功登入后 网站会给浏览器一个『令牌』 之后只要拿着这个『令牌』到网站上 就会被视为已经登入 再来下面是 XSS 最简单 ...

  2. Android 中的 WebView实现 Html5 标签网页加载

    自Android 4.4起,Android中的WebView开始基于Chromium(谷歌浏览器)支持浏览器的一系列功能,webkit解析网页各个节点,这个改变,使得WebView的性能大幅度提升,并 ...

  3. [刘阳Java]_Java程序员的成长路线_第3讲

    按照Java从业人员的职位晋升来说,Java程序成长路线大致如下 Java程序员 JavaEE初级软件工程师 JavaEE中级软件工程师 JavaEE高级软件工程师 Java架构师 按照职业发展方向, ...

  4. 使用JMeter进行负载测试——终极指南

    这篇教程讨论的是JMeter,它是一款基于Java的.集合了几个应用程序.具有特定用途的负载和性能测试工具. 本篇主要涉及的内容: 解释一下JMeter的用途 JMeter的实现方式以及采用的技术 安 ...

  5. try-catch-finally的含有return使用揭秘

    很多人都会纠结这么一个问题try-catch-finally中有return的情况,我自己总结如下: 如果是值类型的话 请看代码 using System; using System.Collecti ...

  6. FreeBSD_11-系统管理——{Part_2-核心}

    一.Managing Services in FreeBSD Service restart will only work if it is set to YES in /etc/rc.conf. T ...

  7. XmlSerializer 对象的Xml序列化和反序列化,XMLROOT别名设置

    这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间.   为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中 ...

  8. 【Java学习笔记】HashMap子接口---LinkedHashMap

    特点: 存入元素的顺序   与   取出元素的顺序相同(与LinkedHashSet类似) import java.util.HashMap; import java.util.Iterator; i ...

  9. mysql远程连接:ERROR 1130 (HY000): Host '*.*.*.*' is not allowed to connect to this MySQL server解决办法

    安装完MySQL后,远程连接数据库的时候,出现 ERROR 1130 (HY000): Host '192.168.0.1' is not allowed to connect to this MyS ...

  10. ubuntu Screen 的比较详细的命令

    Linux Screen Commands For Developers 转自:http://fosshelp.blogspot.com/2014/02/linux-screen-commands-f ...