2014-12-31 52 views
0

出於某種原因,當我嘗試通過模態segue打開視圖控制器時,它會打開兩個相同的類型。這是爲什麼發生?兩個模態VC同時顯示ios

Warning: Attempt to present <ModalViewController: 0x7fa062c5edd0> 
on <HomeViewController: 0x7fa062e16e40> which is already presenting 
<ModalViewController: 0x7fa062fb9780> 

這是造成的問題,因爲我嘗試使用委託,但我的主視圖控制器從來沒有得到正確的委託。

當我點擊觸發showModalView

HomeViewController

- (IBAction)showModalView:(UIButton *)sender { 
    ModalViewController *modalView = [[ModalViewController alloc] init]; 
    [self presentViewController:modalView animated:YES completion:nil]; 
} 

我嘗試這個解決方案herehere和十幾個其他的按鈕,就會出現問題,但沒有似乎對我的工作。

這是怎麼發生的?

+0

您使用IBAction設置了哪種類型的事件? 'touchUpInside'? – Shubhank

+0

您是否嘗試過使用Storyboard方法? – coreDeviOS

+0

按鈕是否也被連接到一個segue?如果是這樣,你不應該在代碼中調用presentViewController。 – rdelmar

回答

0

你遇到的問題是因爲你已經將一個segue連接到按鈕,並且還在代碼中呈現控制器;你應該做一個或另一個。當你刪除segue時,你會看到一個黑屏,因爲你使用alloc init來創建你的控制器。如果您在故事板中創建控制器,則應該使用instantiateViewControllerWithIdentifier:相反。

但是,更簡單的方法是將segue連接到按鈕,並刪除按鈕操作方法中的代碼。該按鈕不需要一個動作方法,如果你有它直接掛鉤到一個segue。所有這些都在Apple的文檔「適用於iOS的視圖控制器編程指南」中介紹。你應該閱讀它。