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 ...
随机推荐
- ESXi虚拟磁盘共享
因为项目需要需要一个磁盘共享的环境. 最先想到用iSCSI,两个客户端挂载同一个远端盘:这样确实可行,但是感觉太繁琐,想到既然是虚拟机环境,可以设置虚拟磁盘共享. 于是网上一番搜罗,确实有人这个做过, ...
- struts2 标签 和 c标签的页面数据显示
用struts2 标签显示的页面代码 <s:if test="#request.employees == null || #request.employees.size() == 0& ...
- 无线网络的切换bat
内网外网都是无线,切换起来麻烦,做了两个个bat(注意,切换网络的时候有延时,就点两次). -------------------下面的是切换到内网-------------------------- ...
- CI框架源码分析
这几天,把ci源码又看了一遍,于是有了新的收获.明白了在application目录下core文件夹的作用,就是用来写ci核心文件的扩展的, 而且需要在配置文件中添加类前缀MY_. CI框架整体是但入口 ...
- LintCode Search For a Range (Binary Search)
Binary Search模板: mid 和 target 指针比较,left/ right 和 target 比较. 循环终止条件: 最后剩两数比较(while(left + 1 < righ ...
- HDFS介绍
一.HDFS概述 1.HDFS设计思想来源于Google的GFS,是GFS的开源实现. 2.HDFS要解决的问题: -存储超大文件,比如TB级别 -防止文件丢失. 3.HDFS的特点 -可以存储超大文 ...
- 《C与指针》第四章练习
本章问题 1.Is the following statement legal?If so,what does it do? (下面的语句是否合法,如果合法,它做了什么) 3 * x * x - 4 ...
- HDU-2222 Keywords Search(AC自动机--模板题)
题目大意:统计一共出现了多少次模板串. 题目分析:AC自动机的模板题.不过这题有坑,相同的模板串不能只算一次. 代码如下: # include<iostream> # include< ...
- WPF 中保存 window(窗口)或者canvas成图片
最近需要用到这个功能,搜了一下不少代码有问题 ,找到一个效果比较好的,支持多级子元素 记一下. private void button_save_window_Click(object sender, ...
- ECShop函数列表大全
lib_time.php gmtime() P: 获得当前格林威治时间的时间戳 /$0 server_timezone() P: 获得服务器的时区 /$0 local_mktime(hour=NULL ...