Ios 检查布尔值是否已更改
我想在我的Popover类中隐藏我的按钮,只要我在另一个类中的bool值为false,但问题是我没有得到“TRUE”值 我的第一节课Ios 检查布尔值是否已更改,ios,objective-c,boolean,observers,Ios,Objective C,Boolean,Observers,我想在我的Popover类中隐藏我的按钮,只要我在另一个类中的bool值为false,但问题是我没有得到“TRUE”值 我的第一节课 -(void) hideButton{ finished = _secondVC.finished; BOOL isRunning = !finished; if(isRunning){ _deleteButton.hidden = YES; }else if(finished){
-(void) hideButton{
finished = _secondVC.finished;
BOOL isRunning = !finished;
if(isRunning){
_deleteButton.hidden = YES;
}else if(finished){
_deleteButton.hidden = NO;
}
}
我在ViewWillAppeard函数中调用hideButton方法
我的第二节课
-(void) someAction{
if(something){
self.finished = YES;
}
-(void) someAction{
if(something){
[[NSNotificationCenter defaultCenter] postNotificationName:@"syncFinish"
object:self];
}
编辑:
现在,如果我加载了Popover并触发了NSNotification,那么按钮将被启用,但问题是,如果我关闭并打开Popover,我的删除按钮仍然被禁用
我的爆米花课
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if(syncFinished){
_deleteButton.enabled = YES;
}else if(!syncFinished){
_deleteButton.enabled = NO;
}
}
- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(showButton)
name:@"syncFinish"
object:nil];
}
- (void) showButton{
syncFinished = YES;
_deleteButton.enabled = YES;
}
我的第二节课
-(void) someAction{
if(something){
self.finished = YES;
}
-(void) someAction{
if(something){
[[NSNotificationCenter defaultCenter] postNotificationName:@"syncFinish"
object:self];
}
你不能直接观察这个值
当操作开始/结束时,您可以发送
NSNotification
,并在第一节课中观察以显示/隐藏按钮。我使用NSUserDefaults解决了此问题。如果有什么事情发生,我可以设置bool。在其他每节课上,我都能读到这本书。
所以在我的第二节课上:
-(void) someAction{
if(something){
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"syncFinish"];
} else {
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"syncFinish"];
}
在我的Popover课上我说
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"syncFinish"]) {
_deleteButton.enabled = NO;
} else {
_deleteButton.enabled = YES;
}
}
你的问题不清楚。您在哪里观察到
BOOL
值?这两个类中的两个方法是如何联系在一起的?您需要比“得不到真实值”更清楚。我猜你可能在标题中使用了英语意义上的“观察”一词,而读者认为你的意思是“关键价值观察”(KVO)中的技术含义。编辑你的问题以提供更多细节,也许有人能帮助你。你代码中的逻辑是令人痛苦的。请理解如果(事物)
那么否则
已经是的意思了!东西
,如果(!东西),则无需放置否则。不是说这是一个好主意,但KVO可以在第二个VCwell上使用完成的
,这一个对我有用。但每当我关闭视图并再次重新加载时,删除按钮将不会启用。因为这个方法不会再被解雇了。是的。。。在这种情况下,创建按钮时必须检查值。。只有当对象已经存在时,通知才会起作用。这不是NSUserDefaults设计的目的。我没有找到任何其他适合我的解决方案。