2013-08-29 76 views
0

您好,無法關閉視圖的問題。我也讀了不少Q &作爲我試着嘗試幾個選項後無法關閉模態視圖控制器

[self dismissModalViewControllerAnimated:YES] 

一旦沒有工作,我試圖調用父視圖:

[self.parentViewController dismissModalViewControllerAnimated:YES]; 

再有就是對什麼是工作在iOS上的討論5,後來,我嘗試這種代碼:

if ([self respondsToSelector:@selector(presentingViewController)]){ 
    [self.presentingViewController dismissModalViewControllerAnimated:YES]; 
} else { 
    [self.parentViewController dismissModalViewControllerAnimated:YES]; 
} 

的最後一件事我已經嘗試了加入以下代碼從主線程撥打電話:

[self performSelectorOnMainThread:@selector(dismissSelf) withObject:nil waitUntilDone:NO]; 

最終,我沒有辦法解決這個問題,因爲沒有任何工作適合我。 我會很高興看到使其工作的「殺手」系列。

感謝, 西蒙

+1

您是如何將它呈現在第一位的? – Firo

+0

_fav = [[FavoritesActivityViewController alloc] initWithNibName:@「FavoritesActivityViewController」bundle:[NSBundle mainBundle]]; [self.view addSubview:_fav.view]; – Simon

回答

2

您的問題(根據您的評論)是你在技術上沒有使用模式,您使用的是子視圖!

如果你想用一個模式,你需要做的:

[self presentModalViewController:self.fav animated:YES]; 

出示您的控制器,而不是:[self.view addSubview:_fav.view];

然後你被解僱就可以了(你的許多解決方案,將工作):

[self dismissModalViewControllerAnimated:YES]; 

否則,如果你不希望使用一個子視圖,你需要做到這一點將其刪除:

[self.fav.view removeFromSuperview]; 

(它看起來像你正在使用ivars。如果您希望繼續使用它們,請將self.fav替換爲_fav

+0

如果我正確理解以下行: [self.fav.view removeFromSuperview];應該在父視圖中調用 ,同時在子視圖本身上獲取選擇器。我如何讓父母從子視圖中調用此命令? – Simon

+1

如果我正確理解你,你有'childViewController'('fav')觸發的某個動作(比如說一個按鈕)應該移除子視圖('fav.view'),對嗎?在這種情況下,你會想看看'delegates'和'protocols'。否則,你可以在'fav'中調用'[self.view removeFromSuperView];''。 (另外,如果你試圖使用模態,你應該採用模態方法,那麼你可以在'fav'中使用'dismissModalView ...')。 – Firo

+0

嘗試在fav中運行此代碼([self.view removeFromSuperView];)會導致編譯錯誤,指出removeFromSuperView在UIView中不可見。我必須包含一些頭文件嗎? – Simon

相關問題