他のクラスのブール値がfalseのときにPopoverクラスで自分のボタンを非表示にしたいが、問題は "TRUE"の値を得られない。ブール値が変更されているかどうか確認する
マイファーストクラス
-(void) hideButton{
finished = _secondVC.finished;
BOOL isRunning = !finished;
if(isRunning){
_deleteButton.hidden = YES;
}else if(finished){
_deleteButton.hidden = NO;
}
}
は、私は私のViewWillAppear機能にhideButtonのメソッドを呼び出します。
私の第二のクラス
-(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];
}
ご質問は不明であると言います。あなたは 'BOOL'値をどこで観察していますか?これら2つのクラスの2つのメソッドはどのようにして接続されていますか? – rmaddy
"真の価値を得ない"よりも明確にする必要があります。私はあなたが "Key value observing"(KVO)の技術的意味を意味していると仮定している間に、英語の意味でタイトルに "Observing"という言葉を使用しているかもしれないと推測しています。あなたの質問を編集して詳細を提供すれば、誰かがあなたを助けることができるかもしれません。 – CRD
あなたのコードのロジックは厄介です。 'もし(物)'、そして 'else'は既に'!thing'を意味し、 'else if(!thing)'を入れる必要はないことを理解してください。 – trojanfoe