2017-08-22 12 views
0

私はこれについて多くの質問をしていますが、答えは私には何もしません。ストーリーボードで提示されたポップオーバーを解消しようとしています

私はストーリーボードを使用してポップオーバーを提示しています。しばらくすると、私はそのポップオーバーをプログラム的に却下したい。

私は多くのことを試みましたが、最後の試行では、ポップオーバーの内側にあるビューコントローラ用のクラスを作成します。

- (id)initWithCoder:(NSCoder *)aDecoder { 
    self = [super initWithCoder:aDecoder]; 
    if (self) { 
    [self initializeNotification]; 
    } 
    return self; 
} 


- (void) initializeNotification { 
    [[NSNotificationCenter defaultCenter] 
    addObserverForName:@"closePopover" 
    object:self 
    queue:[NSOperationQueue mainQueue] 
    usingBlock:^(NSNotification * _Nonnull note) { 
    [self dismissViewControllerAnimated:YES completion:nil]; 
    }]; 
} 

、その後、私は

[[NSNotificationCenter defaultCenter] 
    postNotificationName:@"closePopover" 
        object:self]; 

のような通知を掲示し、何も起こりません...ポップオーバーが存在し続けているメインのコードから:クラスは、このようなものです。

なぜですか?

+0

シェア完全なコード、これがいっぱいになることができます – Krunal

+0

場合コード。ボタンをクリックすると、ボタンはこのクラスのViewControllerを表示します。私は後でそれを却下しようとします。それは何もしません。 – SpaceDog

答えて

2

は、あなたはそれがないので、通知オブザーバを作成するときに(objectパラメータに)nilselfを交換する必要がselfその投稿の通知:

[[NSNotificationCenter defaultCenter] addObserverForName:@"closePopover" object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) { 
    [self dismissViewControllerAnimated:YES completion:nil]; 
}]; 
+0

ブリリアント?私はこのオブジェクトが通知が割り当てられていた場所のオブジェクトだと思った!ありがとう!完璧に今働く! – SpaceDog

+1

嬉しいです:) –

関連する問題