突然觉得好久没有更新博客了,今天就想把自己的项目中的一些功能和常用的模块写出来给大家参考一下。。。
这是我的二个项目中的不同的设置界面,第一个设置的那个按钮是 用的开关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/ 这些都是自己写的,如有不明白,可以找我。。谢谢。。。互相学习,共同努力!!@_@