iOS YSMine 通用设置
概述
我们在开发的过程中,经常需要重复的写个人中心设置的代码,很多情况下,我们都是通过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 通用设置的更多相关文章
- iOS开发--应用设置及用户默认设置【1、bundle的运用】
在iphone里面,应用都会在“设置”里面有个专属的应用设置,选择该菜单界面,用户便可以在其中输入和更改各种选项,协助用户更便捷设置个人喜好与习惯. 在这一节中,希望能通过对捆绑包(bu ...
- iOS开发--应用设置及用户默认设置——转载
[链接]iOS开发--应用设置及用户默认设置[1.bundlehttp://www.jianshu.com/p/6f2913f6b218 在iphone里面,应用都会在“设置”里面有个专属的应用设置, ...
- .NET/android/java/iOS AES通用加密解密
移动端越来越火了,我们在开发过程中,总会碰到要和移动端打交道的场景,比如.NET和android或者iOS的打交道.为了让数据交互更安全,我们需要对数据进行加密传输.今天研究了一下,把几种语言的加密都 ...
- 解决iOS中 tabBarItem设置图片(image+title切图在一起)时造成的图片向上偏移
解决iOS中 tabBarItem设置图片(image+title切图在一起)时造成的图片向上偏移 解决办法1:设置tabBarItem的imageInsets属性 代码示例: childContro ...
- iOS开发之设置界面的抽取
几乎每款app都会有一个设置的界面!!! 那么我们的设置界面到底要怎么写才能最方便使用呢?下面我就来说说我的想法. 1.观察原型图 2.找出相同的东西,目的是抽出一个基类模块,只要我写好了这个控制器, ...
- C#/IOS/Android通用加密解密方法
原文:C#/IOS/Android通用加密解密方法 公司在做移动端ios/android,服务器提供接口使用的.net,用到加密解密这一块,也在网上找了一些方法,有些是.net加密了android解密 ...
- 【Openvpn】iOS OpenVPN客户端设置指南(适用iPhone/iPad)
适用于iPhone/iPad/这些iOS设备.之前iOS使用OpenVPN是需要越狱的,并且是付费第三方应用. 去年开始OpenVPN官方推出了iOS客户端就好用多了,免费也无需越狱. 说明:如果是新 ...
- ios 10 访问设置问题
ios 10 访问设置问题 从ios8之api支持访问设置通过访问UIApplicationOpenSettingsURLString来跳转设置 NSURL*url=[NSURL URLWithStr ...
- ios framework通用库的制作
这篇文章是在史上最完整的iOS DIY framework 详细教程(一)的基础上加以修改 1.新建一个静态库工程: 2:取自己喜欢的名字: 3.删除向导所生成工程中的 Target: 3.删除Tes ...
随机推荐
- python第十一天-----补:线程池
低版本: #!/usr/bin/env python import threading import time import queue class TreadPool: ""&q ...
- JAVA通过HTTP访问:Post+Get方式(转)
public class TestGetPost { /** * 向指定URL发送GET方法的请求 * @param url 发送请求的URL * @param param 请求参数,请求参数应该是n ...
- linux下查找某文件关键字
-e表示罗列出与关键字有关的行,“ABC”表示查找的关键字,/XXX/4.assoc.linear表示该路径下的文件 .assoc.linear
- spring mvc 配置文件信息记录
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...
- CSS透明属性详解
.transparent_class { filter:alpha(opacity=50); -moz-opacity:0.5; -khtml-opacity: 0.5; opacity: 0.5; ...
- python 中 深拷贝和浅拷贝的理解
在总结 python 对象和引用的时候,想到其实 对于python的深拷贝和浅拷贝也可以很好对其的进行理解. 在python中,对象的赋值的其实就是对象的引用.也就是说,当创建一个对象,然后赋给另外一 ...
- Django跑起来
1. 安装python 2. 安装pip 3. 安装dj 4. 配置dj 5. 建立dj web app 6. 开始项目 打算写这篇文章,先把目录写上
- adb server is out of date killing... 的解决办法
是adb server端口被占用了 你先执行adb nodaemon server ,查看adb server的端口是多少 1 2 C:\Users\xxxx>adb nodaemon serv ...
- StringGrid 实例4 本例功能: 1、给每个单元格赋值 2、调整当前单元格位置:上下左右;
实例4 本例功能:1.给每个单元格赋值 2.调整当前单元格位置:上下左右: 运行效果图:
- MHA安装手记
安装MHA服务器和客户端 # yum install perl-DBD-MySQL 在manager节点上: # yum install perl-DBD-MySQL # yum install pe ...