iOS 设置页面的代码编写
突然觉得好久没有更新博客了,今天就想把自己的项目中的一些功能和常用的模块写出来给大家参考一下。。。


这是我的二个项目中的不同的设置界面,第一个设置的那个按钮是 用的开关switch ,当然这个就容易一些了,你只用控制他的 no 和yes 。里面的逻辑就是,你需要在你的引导页那里设置他的初始化,因为你刚进来肯定要给他设置全部打开的,因为这是程序中的一个惯性吧,然后,如果你有引导页的话,你就需要在引导页中设置他的初始化,给他设置 了初始化,后续就保存他的状态到本地就可以,每次进来只需要读取他的状态来设置就可以,
1.在引导页中初始化他的状态代码(这是有引导页的情况下写到引导页里面的,进行初始化)
//程序刚运行的时候给他设置为0
[[NSUserDefaults standardUserDefaults]setInteger: forKey:@"countMessageNumber"];
[[NSUserDefaults standardUserDefaults] synchronize]; //新消息,声音,震动
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isNewMessage"];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isVoice"];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isVibrate"]; //这是开关控件的设置为YES
2 .在设置页面进行控制他的开关设置,因为你的接受新消息通知打开,下面的全部要打开,如果关闭下面的全部要关闭,下面是代码(看不懂的问我)
#pragma mark 切换开关转化事件 (这是第一个设置的代码,这个是开关按钮写的)
-(void)statuesTableViewCell:(MessageSettingTableViewCell *)cell reloadTableView:(UISwitch *)sw
{
NSLog(@"section:%li,switch:%i",(long)sw.tag, sw.isOn);
switch (cell.tag) {
case :
{
if (sw.isOn)// 控制开关--------如果开了,全开
{ isShowCell=YES;
IsShowFirst = YES;
isShowSecond = YES;
//设置cell的收缩控制
[WDLUserDefaults setBool:isShowCell forKey:@"isShowCell"];
[WDLUserDefaults setBool:IsShowFirst forKey:@"IsShowFirst"];
[WDLUserDefaults setBool:isShowSecond forKey:@"isShowSecond"]; isNewMessage = YES;
isVibrate = YES;
isVoice = YES; //新消息,声音,震动 实时的更新消息的状态
[WDLUserDefaults setBool:isNewMessage forKey:@"isNewMessage"];
[WDLUserDefaults setBool:isVoice forKey:@"isVoice"];
[WDLUserDefaults setBool:isVibrate forKey:@"isVibrate"]; [[NSUserDefaults standardUserDefaults] synchronize];
[_m_table reloadData]; } else{ isShowCell=NO;
IsShowFirst = NO;
isShowSecond = NO; [WDLUserDefaults setBool:isShowCell forKey:@"isShowCell"];
[WDLUserDefaults setBool:IsShowFirst forKey:@"IsShowFirst"];
[WDLUserDefaults setBool:isShowSecond forKey:@"isShowSecond"]; isNewMessage = NO;
isVibrate = NO;
isVoice = NO; //新消息,声音,震动 实时的更新消息的状态
[WDLUserDefaults setBool:isNewMessage forKey:@"isNewMessage"];
[WDLUserDefaults setBool:isVoice forKey:@"isVoice"];
[WDLUserDefaults setBool:isVibrate forKey:@"isVibrate"];
[[NSUserDefaults standardUserDefaults] synchronize]; [_m_table reloadData]; }
}
break;
case :
{ // 判断是否打开
if (sw.isOn)// 控制开关--------如果开了,全开
{ isVoice = YES; //新消息,声音,震动
[WDLUserDefaults setBool:isVoice forKey:@"isVoice"]; [[NSUserDefaults standardUserDefaults] synchronize];
// [_m_table reloadData]; }else{ isVoice = NO; //新消息,声音,震动 [WDLUserDefaults setBool:isVoice forKey:@"isVoice"]; [[NSUserDefaults standardUserDefaults] synchronize];
// [_m_table reloadData]; } }
break; case :
{ // 判断是否打开
if (sw.isOn)// 控制开关--------如果开了,全开
{ isVibrate = YES; //新消息,声音,震动
[WDLUserDefaults setBool:isVibrate forKey:@"isVibrate"];
[[NSUserDefaults standardUserDefaults] synchronize];
// [_m_table reloadData];
} else{ isVibrate = NO; //新消息,声音,震动
[WDLUserDefaults setBool:isVibrate forKey:@"isVibrate"]; [[NSUserDefaults standardUserDefaults] synchronize];
// [_m_table reloadData];
} }
break; case :
{ }
break; default:
break;
} // [[NSNotificationCenter defaultCenter] postNotificationName:@"MessageisVoice" object:nil];
}
3 .这样就在每个地方进行对他对key进行调用。来控制他的语音和振动的设置
4 .下面说第二个设置的控制
4.1 这个按钮是一个真的 按钮 UIButton 。点击进行图片的切换,这个有点小坑。不过原理都一样
- (void)viewDidLoad {
[super viewDidLoad];
NSUserDefaults *messageDeful=[NSUserDefaults standardUserDefaults];
//接受新消息通知
NSString *isMessage_notf = [messageDeful objectForKey:@"isMessage_notf"];
_str_Message=@"";
NSLog(@"isMessage_notf %@",isMessage_notf);
if (isMessage_notf == nil) {
[messageDeful setObject:_str_Message forKey:@"isMessage_notf"];
[messageDeful synchronize ];
}
//设置声音
NSString *isVoice_Set = [messageDeful objectForKey:@"isVoice_Set"];
_str_Voice=@"";
NSLog(@"isVoice_Set %@",isVoice_Set);
if (isVoice_Set == nil) {
[messageDeful setObject:_str_Voice forKey:@"isVoice_Set"];
[messageDeful synchronize ];
}
// 设置振动
NSString *isVibration = [messageDeful objectForKey:@"isVibration_Set"];
_str_isVibration=@"";
NSLog(@"isVibration %@",isVibration);
if (isVibration == nil) {
[messageDeful setObject:_str_isVibration forKey:@"isVibration_Set"];
[messageDeful synchronize ];
}
//设置扬声器打开
NSString *isSpeaker = [messageDeful objectForKey:@"isSpeaker_Set"];
_str_isSpeaker=@"";
NSLog(@"isSpeaker %@",isSpeaker);
if (isSpeaker == nil) {
[messageDeful setObject:_str_isSpeaker forKey:@"isSpeaker_Set"];
[messageDeful synchronize ];
}
_huud = [[MBProgressHUD alloc]init];
}
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
NSString *is_Message=[userdefault objectForKey:@"isMessage_notf"];
if ([is_Message isEqualToString:@""]) {
[_messageaccept setImage:[UIImage imageNamed:@"switch_on@2X.png"] forState:UIControlStateNormal];
}else if([is_Message isEqualToString:@""])
{
[_messageaccept setImage:[UIImage imageNamed:@"switch_off@2X.png"] forState:UIControlStateNormal];
}
NSString *isVoice=[userdefault objectForKey:@"isVoice_Set"];
if ([isVoice isEqualToString:@""]) {
[_voice setImage:[UIImage imageNamed:@"switch_on@2X.png"] forState:UIControlStateNormal];
}else if([isVoice isEqualToString:@""])
{
[_voice setImage:[UIImage imageNamed:@"switch_off@2X.png"] forState:UIControlStateNormal];
}
NSString *isVibration=[userdefault objectForKey:@"isVibration_Set"];
if ([isVibration isEqualToString:@""]) {
[_vibration setImage:[UIImage imageNamed:@"switch_on@2X.png"] forState:UIControlStateNormal];
}else if([isVibration isEqualToString:@""])
{
[_vibration setImage:[UIImage imageNamed:@"switch_off@2X.png"] forState:UIControlStateNormal];
}
NSString *isSperk=[userdefault objectForKey:@"isSpeaker_Set"];
if ([isSperk isEqualToString:@""]) {
[_speaker setImage:[UIImage imageNamed:@"switch_on@2X.png"] forState:UIControlStateNormal];
}else if([isSperk isEqualToString:@""])
{
[_speaker setImage:[UIImage imageNamed:@"switch_off@2X.png"] forState:UIControlStateNormal];
}
}
这是在ViewDidLoud里面设置他的初始化,因为我这个项目中没有设置引导页,所以在ViewDidLoad里面进行了初始化,然后在viewWillAppear里面设置了他的点击更换图片的一些操作。然后每个地方用的话,只需要设置一些他的属性或者在.m里面设置他的变量,然后获得他的Key值,进行获取他的状态,然后根据他的状态来设置他的声音还是振动了。。
原理就是这样的。。非常感谢我 胖哥的指导。。在这里很感谢他。。他的
@平淡的我
博客http://www.cnblogs.com/wangdelong/ 这些都是自己写的,如有不明白,可以找我。。谢谢。。。互相学习,共同努力!!@_@
iOS 设置页面的代码编写的更多相关文章
- IOS 推送-配置与代码编写
IOS 推送配置与代码编写 这里介绍IOS的推送,本文章已经在IOS6/7/8上都能运行OK,按照道理IOS9应该没问题. 大纲: 1.文章前提 2.推送介绍 3.推送文件账号设置 4.推送证书介绍 ...
- iOS书摘之编写高质量iOS与OS X代码的52个有效方法
来自<Effective Objective-C 2.0编写高质量iOS与OS X代码的52个有效方法>一书的摘要总结 一.熟悉Objective-C 了解Objective-C语言的起源 ...
- Xamarin iOS教程之编辑界面编写代码
Xamarin iOS教程之编辑界面编写代码 Xamarin iOS的Interface Builder Interface Builder被称为编辑界面.它是一个虚拟的图形化设计工具,用来为iOS应 ...
- 第一章 熟悉Objective -C 编写高质量iOS与OS X代码的52 个有效方法
第一章 熟悉Objective -C 编写高质量iOS与OS X代码的52 个有效方法 第一条: 了解Objective-C 语言的起源 关键区别在于 :使用消息结构的语言,其运行时所应执行 ...
- iOS 从应用中跳转至系统设置页面里的多种设置页面
我们在开发app过程中很多时候会需要设置系统权限,这时就需要在应用中跳转至系统设置页面权限设置页面,以下是自己结合网上的资料总结的一些经验: 直接从应用中跳转至系统设置中这个应用的权限设置页面 NSU ...
- IOS跳转设置页面及其他各种跳转页面设置
转载来源 CocoaChina 跳到更多设置界面 除了跳到WiFi设置界面,能不能跳到其他的设置界面呢?比如:定位服务.FaceTime.音乐等等.都是可以的,一起来看看如何实现的! 定位服务 定位服 ...
- 【iOS】跳转到设置页面
iOS8.0以后有效 定位服务 定位服务有很多APP都有,如果用户关闭了定位,那么,我们在APP里面可以提示用户打开定位服务.点击到设置界面设置,直接跳到定位服务设置界面.代码如下: 1 2 3 4 ...
- ios开发中APP底部上滑不能调出如WiFi、蓝牙、播放等的设置页面的解决的方法
在开发的APP中我们通常通过手动底部上滑来调出WiFi.蓝牙.飞行模式等的设置页面.有时我们开发的APP无法调出. 解决的方法: 进入iPhone "设置" --> &quo ...
- iOS 10 :用 UIViewPropertyAnimator 编写动画
英文:shinobicontrols 译文:戴仓薯 链接:http://www.jianshu.com/p/4244cf130478 [iOS 10 day by day] Day 1:开发 iMes ...
随机推荐
- HTML特殊符号对照表
特殊符号 命名实体 十进制编码 特殊符号 命名实体 十进制编码 Α Α Α Β Β Β Γ Γ Γ Δ Δ Δ Ε Ε Ε Ζ Ζ Ζ Η Η Η Θ Θ Θ Ι Ι Ι Κ Κ Κ Λ Λ Λ Μ ...
- 开发者如何利用工具快速开发出完美APP
文|移动互联网李建华 微信:ydhlwdyq 传统的个人开发者,要想开发出一个完美的APP要 经过以下几个过程:搭建开发环境,写代码,写统计系统,开发即将完成后,要购买服务器,然后把程序布置到服务器上 ...
- json对象转换为json字符串
今天浏览网页的时候看到这个题也是一道很经典的题目了 var str ='aaaaaaajsdjdfkdkg'; ,]; var obj={}; ;i<str.length;i++){ if(!o ...
- iOS求职之OC面试题
1.Objective-C的类可以多重继承么?可以采用多个协议么? 答:不可以多重继承,可以采用多个协议. 2.#import和#include的区别是什么?#import<> 跟 #im ...
- html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?
* HTML5 现在已经不是 SGML(标准通用标记语言,是一种定义电子文档结构和描述其内容的国际标准语言) 的子集,主要是关于图像,位置,存储,多任务等功能的增加. * 拖拽释放(Drag an ...
- Win10/UWP新特性系列—Launcher实现应用间的通信
UWP中,微软为Windows.System.Launcher启动器新增了很多的功能,以前只能启动App,打开指定扩展名文件,对uri协议的解析,以及当启动的应用没有安装时则会提示前往商店下载等. 如 ...
- activity 和 生命周期 :流程
activity是android的一个基本的组件.讨论生命周期,taskstack等等的话题的时候.就不得不去看一下android framework层的源码了. 生命周期,实际就是系统调用andro ...
- spring整合hibernate配置文件
Spring对hibernate配置文件hibernate.cfg.xml的集成,来取代hibernate.cfg.xml的配置 spring对hibernate配置文件hibernate.cfg.x ...
- select、poll、poll的比较(转)
原文地址:http://www.cnblogs.com/xuxm2007/archive/2011/08/15/2139809.html select.poll.epoll的比较 linux提供了se ...
- Anchor 对象和document对象
<script type="text/javascript"> function chanklink(){ document.getElementById(" ...