2011-08-06 46 views
0

我遇到了dismissModalViewControllerAnimated方法的問題。UIViewController - dismissModalViewControllerAnimated問題

標題是這樣的:

#import <UIKit/UIKit.h> 
#import "AppDelegate.h" 
#import "GADBannerView.h" 
#import "weatherSetUp.h" 
@interface weatherPicViewController : UIViewController{ 

在我viewController.m文件我稱之爲

-(IBAction)didClickSetting:(id)sender{ 
    weatherSetUp *views = [[weatherSetUp alloc] initWithNibName:nil bundle:nil]; 
    [self presentModalViewController:views animated:YES]; 
} 

這一切工作正常,在我weatherSetUp文件,一旦用戶完成設置我解散模態觀點。我通過在上面的viewController.m文件中調用此方法來實現:

-(void)dismissModal{ 

    [self.parentViewController dismissModalViewControllerAnimated:NO]; 
    [self dismissModalViewControllerAnimated:NO]; 
    [self dismissModalViewControllerAnimated:NO]; 
    [self.parentViewController dismissModalViewControllerAnimated:NO]; 
    NSLog(@"Model gone!"); 
} 

但是這些工作都不起作用。

這是我weatherSetUp文件的頭文件:

#import <UIKit/UIKit.h> 
#import "viewController.h" 
@interface weatherSetUp : UIViewController 
-(IBAction)didClickClose:(id)sender; 
@end 

而且我已經實現的唯一方法是:

-(IBAction)didClickClose:(id)sender{ 
    NSLog(@"CLick "); 
    viewController *viewEr = [[viewController alloc] init]; 
    [viewEr dismissModal]; 
} 

所有的NSLog的工作時,我按一下按鈕,我在這裏搜索並試圖解除它的上述方式,並沒有任何工作,任何想法?

回答

3

這是怎麼回事錯的是你隨機視圖控制器,而不是實際上有模態控制器調用對象的dismissModal。什麼你想要在didClickClose的事:這是

[[self parentViewController] dismissModalViewControllerAnimated:NO]; 

而且,你不應該在可可小寫字符開始你的類名。他們應該真正大寫,並有一個前綴,例如ABCWeatherSetUp。前綴可以是任何你想要的,但通常你需要基於你的名字,你公司的名字或你的項目名稱。

+0

謝謝你,這正是我需要的。我現在完全明白,但我仍然不確定這個:viewController * viewEr = [[viewController alloc] init]; [viewEr dismissModal]; 是因爲實際的ViewController與ModalViewController已經在堆/堆棧和創建我的viewController類的實例將剛剛創建一個新的一個新的我的意思是一個新的ViewController不包含ModalViewControllers? – Rich

+0

是的,你正在創建一個新的空白視圖控制器。您需要對特定實例的引用。在這種情況下,UIKit會爲你處理這個問題,所以當你有模態地顯示視圖控制器B的視圖控制器A時,那麼A就是B的parentViewController。在其他情況下,您可能需要自己創建此引用(添加屬性並傳遞要引用的對象)。 –

0

您的viewEr與您試圖關閉的viewController不同,因爲您正在創建viewContoller的新對象。

您可以創建一個viewContoller性能,並在您的viewController類文件

weatherSetup.viewController = self.parentViewController; 

注:請不要使用viewContoller作爲伊娃,使用不同的可能名稱。

0

insted的[self.parentViewController dismissModalViewControllerAnimated:NO]; 寫的這個[self dismissModalViewControllerAnimated:NO];

相關問題