Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 检查布尔值是否已更改_Ios_Objective C_Boolean_Observers - Fatal编程技术网

Ios 检查布尔值是否已更改

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){

我想在我的Popover类中隐藏我的按钮,只要我在另一个类中的bool值为false,但问题是我没有得到“TRUE”值

我的第一节课

 -(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设计的目的。我没有找到任何其他适合我的解决方案。