我遇到了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的工作時,我按一下按鈕,我在這裏搜索並試圖解除它的上述方式,並沒有任何工作,任何想法?
謝謝你,這正是我需要的。我現在完全明白,但我仍然不確定這個:viewController * viewEr = [[viewController alloc] init]; [viewEr dismissModal]; 是因爲實際的ViewController與ModalViewController已經在堆/堆棧和創建我的viewController類的實例將剛剛創建一個新的一個新的我的意思是一個新的ViewController不包含ModalViewControllers? – Rich
是的,你正在創建一個新的空白視圖控制器。您需要對特定實例的引用。在這種情況下,UIKit會爲你處理這個問題,所以當你有模態地顯示視圖控制器B的視圖控制器A時,那麼A就是B的parentViewController。在其他情況下,您可能需要自己創建此引用(添加屬性並傳遞要引用的對象)。 –