我正在尝试设置布尔值。我可以成功设置它,但是,在另一个类中,反映的更改不会显示。
以下是一个例子:
File1中:
@implementation ClassOne //UIViewController
extern BOOL theValue;
- (void)loadFile {
theValue = YES;
}
...
@end
文件2:
@implementation ClassTwo //UIViewController
BOOL theValue;
- (void)switchValueChanged {
theValue = NO;
}
@end
我最初在第一类中设置了值,初始值为YES。但是,当我将ClassTwo中的值设置为等于NO并返回ClassOne时,该值仍为YES。
我有点卡住了。你会认为它会更新。但事实并非如此。
任何帮助表示感谢。
答案 0 :(得分:0)
完成所需内容的最简单方法是在appDelegate的接口文件中声明BOOL:
@interface AppDelegate : ....
{
BOOL theValue;
}
@property BOOL theValue;
然后从ClassOne或ClassTwo,您可以直接获取/设置变量:
MyAppDelegate *appDelegate = (MyAppDelegate * )[[UIApplication sharedApplication] delegate];
appDelegate.theValue = YES;
OR
如果你真的想要访问全球,只需在<{1}}块
之前声明变量在之外@interface ... @end
然后,只需导入AppDelegate头文件,即可从代码中的任何位置访问变量BOOL theValue
@interface AppDelegate : ...
{
...
}
:
theValue
答案 1 :(得分:0)
看起来你最好使用Singleton Design Pattern ... http://www.galloway.me.uk/tutorials/singleton-classes/
答案 2 :(得分:0)
我明白了。当我的应用程序启动时,它默认将theValue设置为YES。问题是我正在使用viewWillAppear:animated
方法,每次ClassTwo的视图被解除时,viewWillAppear:animated
方法被调用并且被设置的值已被重置。我将方法更改为viewDidLoad
,一切正常。