2016-04-27 4 views
0

Я хочу скрыть свою кнопку в классе Popover, когда значение моего bool в другом классе ложно, но проблема в том, что я не получаю значение «ИСТИНА».Проверьте, не изменилось ли значение Bool

Мой первый класс

-(void) hideButton{ 
     finished = _secondVC.finished; 
     BOOL isRunning = !finished; 
     if(isRunning){ 
     _deleteButton.hidden = YES; 
     }else if(finished){ 
      _deleteButton.hidden = NO; 
     } 
    } 

Я называю метод hideButton в моей функции ViewWillAppear.

Мой второй класс

-(void) someAction{ 
    if(something){ 
    self.finished = YES; 
} 

EDIT:

Теперь, если я загрузить поповер и NSNotification увольняют кнопка включена, но проблема в том, если я закрыть и открыть поповер, моя кнопка удаления по-прежнему отключена.

Мой поповер Класс

- (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){ 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"syncFinish" 
                 object:self]; 
} 
+0

Ваш вопрос остается неясным. Где вы наблюдаете значение «BOOL»? Как связаны два метода из этих двух классов? – rmaddy

+0

Вам нужно быть более четким, чем «не получить истинное значение». Я предполагаю, что вы можете использовать слово «Наблюдение» в названии в английском смысле, в то время как читатели предполагают, что вы имеете в виду его технический смысл в «Key value observing» (KVO). Измените свой вопрос, чтобы предоставить более подробную информацию, и кто-то может вам помочь. – CRD

+0

Логика в вашем коде мучительна. Пожалуйста, поймите, что 'if (вещь)' then' else' уже означает '! Thing', и нет необходимости ставить' else if (! Thing) '. – trojanfoe

ответ

0

вы не можете непосредственно наблюдать значение.

вы можете отправить NSNotification, когда действие начнется/закончится, и обратите внимание на это в вашем первом классе, чтобы показать/скрыть кнопку.

+1

не сказал, что это хорошая идея, но KVO можно было использовать с «готовым» на втором VC – Wain

+0

, и это сработало для меня. Но всякий раз, когда я закрываю свое представление и перезагружаю его, кнопка удаления не будет включена. Потому что этот метод не запускается снова. – Korken55

+0

да ... в этом случае вам нужно проверить значение при создании кнопки. Уведомление будет работать только в том случае, если объект уже существует – Bastian

-1

Я решил эту проблему с NSUserDefaults. поэтому я могу установить bool, если someAction происходит. И в каждом другом классе я могу читать bool. так в моем втором классе:

-(void) someAction{ 
     if(something){ 
     [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"syncFinish"]; 
     } else { 
     [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"syncFinish"]; 
     } 

В Моем поповере классе я говорю

- (void)viewWillAppear:(BOOL)animated { 
     [super viewWillAppear:animated]; 

     if(![[NSUserDefaults standardUserDefaults] boolForKey:@"syncFinish"]) { 
      _deleteButton.enabled = NO; 
     } else { 
      _deleteButton.enabled = YES; 
     } 
    } 
+0

Ужасная идея. Это не то, для чего был разработан NSUserDefaults. – trojanfoe

+0

ну, я не нашел другого решения, которое сработало для меня. – Korken55

 Смежные вопросы

  • Нет связанных вопросов^_^