0

任務: 我有一個導航控制器,推動模態視圖,稱爲登錄。這個登錄視圖有一個按鈕,可以推送另一個模態視圖,稱爲註冊。如果用戶註冊了註冊模式,並且登錄模式應該被解僱。我在登錄視圖中創建了一個nsnotification,用於等待註冊提交操作中的帖子。NSNotification不會消除模態視圖

問題登錄接收到通知但未關閉登錄視圖。我知道該方法運行,因爲NSLog觸發。呼籲解僱的註冊方法之後

登錄viewDidLoad中

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismiss) [email protected]"SignedUp" object nil]; 

登錄辭退

NSLog(@"Dismiss"); // this fires 
[self dismissModalViewControllerAnimated: YES]; 

註冊法(兒童控制器)

[self dismissModalViewControllerAnimated: YES]; 
[[NSNotificationCenter defaultCenter] postNotificationName:@"SignedUp" object:[self parentViewController]]; 

我也試過這種

[self.parentViewController dismissModalViewControllerAnimated:YES]; 

編輯我不推動這些控制器。我正在使用presentModalViewController

+0

你有沒有辦法解決? – Ilanchezhian

回答

1

如果你打算解散整個堆棧,爲什麼你一次只解僱一個呢?這可能不是通知的問題。你可以只用彈出

[[[self parentViewController] parentViewController] dismissModalViewControllerAnimated:YES]; 

,然後如果你想再次顯示它,就讓它再次presentModalViewController整個堆棧。

我確定你可以通過https://stackoverflow.com/search?q=Dismiss+multiple+modal+controllers得到很多輸入

+0

這基本上是解決方案。我不得不將dismiss方法移動到呈現的模式的根視圖,並添加了代碼[self.navigationController dismissModalViewControllerAnimated:YES]; – Trevor

0

你如何展示你的模態視圖?我問的原因是你說'推動模態瀏覽的導航控制器'。

如果您使用的是pushViewController:animated:,那麼它不是一種模態視圖,您需要使用popViewControllerAnimated:才能使其消失。

+0

糟糕。我正在使用一些令人困惑的動作。我使用presentModalViewController – Trevor

+0

在這種情況下,完全忽略我的答案!我只能假設,因爲你有嵌套的模式視圖控制器它變得困惑,但你的代碼應該工作。我會想一想。 。 。 – deanWombourne