类名为:LanguageController
- .h文件:
- #import <Foundation/Foundation.h>
- #define LANGUAGE_STATE_NOTIFICATION @"LANGUAGE_STATE_NOTIFICATION"
- #define LANGUAGE_STATE @"LANGUAGE_STATE"
- @protocol LanguageControllerDelegate<NSObject>
- @required
- @optional
- -(void)updateLanguage;
- @end
- @interface LanguageController : NSObject{
- id<LanguageControllerDelegate> _delegate;
- }
- @property(nonatomic,assign) id<LanguageControllerDelegate> delegate;
- +(LanguageController *)languageController;
- -(void)setDelegate:(id<LanguageControllerDelegate>)delegate;
- @end
- .m文件:
- #import "LanguageController.h"
- static LanguageController *languageController =nil;
- @implementation LanguageController
- @synthesize delegate = _delegate;
- +(LanguageController *)languageController
- {
- @synchronized(self){
- if (languageController == nil) {
- languageController = [[LanguageController alloc] init];
- }
- }
- return languageController;
- }
- -(void)setDelegate:(id<LanguageControllerDelegate>)delegate{
- _delegate = delegate;
- [[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(languageChanged:)name:LANGUAGE_STATE_NOTIFICATIONobject:nil];
- }
- -(void) languageChanged:(id) sender{
- if(_delegate !=nil && [_delegate respondsToSelector:@selector(updateLanguage)]) {
- [_delegateupdateLanguage];
- }
- }
- - (void)dealloc {
- [[NSNotificationCenterdefaultCenter] removeObserver:selfname:LANGUAGE_STATE_NOTIFICATIONobject:nil];
- _delegate=nil;
- [superdealloc];
- }
- @end
将以上两个文件加入到工程后,使用时就非常方便了,首先在更改语言的按钮事件中添加语言切换通知语句:
[[NSNotificationCenter defaultCenter] postNotificationName:LANGUAGE_STATE_NOTIFICATION object:nil];
然后在所有需要刷新页面的viewController的viewDidLoad函数中加入设置代理的语句:
[LanguageController languageController].delegate = self;
再在这些viewController类中实现LanguageControllerDelegate的方法-(void)updateLanguage;所有因语言切换而需要更新或刷新的工作都放着这个代理方法中实现即可。
好了,看完你只要将上面的.h和.m文件加入到自己的工程中,再加上上面提到的几行代码,就可以了,是不是很方便呢
本文详细介绍了如何将LanguageController类整合进您的工程中,以实现便捷的语言切换功能。通过定义代理机制,您只需在按钮事件中触发通知,并在各个viewcontroller的viewDidLoad函数中设置代理,即可在所有需要刷新页面的地方统一调用代理方法来完成语言切换的相关工作。
2668

被折叠的 条评论
为什么被折叠?



