iphone ipad 开发应用内实现多语言自由切换

类名为:LanguageController

  1. .h文件:  
  2. #import <Foundation/Foundation.h>  
  3. #define LANGUAGE_STATE_NOTIFICATION   @"LANGUAGE_STATE_NOTIFICATION"  
  4. #define LANGUAGE_STATE                @"LANGUAGE_STATE"  
  5. @protocol LanguageControllerDelegate<NSObject>  
  6. @required  
  7. @optional  
  8. -(void)updateLanguage;  
  9. @end  
  10. @interface LanguageController : NSObject{  
  11.     id<LanguageControllerDelegate>         _delegate;  
  12. }  
  13. @property(nonatomic,assign) id<LanguageControllerDelegate> delegate;  
  14. +(LanguageController *)languageController;  
  15. -(void)setDelegate:(id<LanguageControllerDelegate>)delegate;  
  16. @end  
  17.   
  18. .m文件:  
  19. #import "LanguageController.h"  
  20. static LanguageController *languageController =nil;  
  21. @implementation LanguageController  
  22. @synthesize delegate = _delegate;  
  23. +(LanguageController *)languageController  
  24. {  
  25.     @synchronized(self){  
  26.         if (languageController == nil) {  
  27.             languageController = [[LanguageController alloc] init];  
  28.         }  
  29.     }  
  30.     return languageController;  
  31. }  
  32. -(void)setDelegate:(id<LanguageControllerDelegate>)delegate{  
  33.     _delegate = delegate;  
  34.     [[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(languageChanged:)name:LANGUAGE_STATE_NOTIFICATIONobject:nil];  
  35. }  
  36. -(void) languageChanged:(id) sender{  
  37.     if(_delegate !=nil && [_delegate respondsToSelector:@selector(updateLanguage)]) {  
  38.         [_delegateupdateLanguage];  
  39.     }  
  40. }  
  41. - (void)dealloc {  
  42.       [[NSNotificationCenterdefaultCenter] removeObserver:selfname:LANGUAGE_STATE_NOTIFICATIONobject:nil];  
  43.      _delegate=nil;  
  44.      [superdealloc];  
  45. }  
  46. @end  

将以上两个文件加入到工程后,使用时就非常方便了,首先在更改语言的按钮事件中添加语言切换通知语句:

[[NSNotificationCenter defaultCenter] postNotificationName:LANGUAGE_STATE_NOTIFICATION object:nil];

然后在所有需要刷新页面的viewControllerviewDidLoad函数中加入设置代理的语句:

[LanguageController languageController].delegate = self;

再在这些viewController类中实现LanguageControllerDelegate的方法-(void)updateLanguage;所有因语言切换而需要更新或刷新的工作都放着这个代理方法中实现即可。

好了,看完你只要将上面的.h.m文件加入到自己的工程中,再加上上面提到的几行代码,就可以了,是不是很方便呢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值