UIViewController - dismissModalViewControllerAnimated问题

时间:2011-08-06 13:09:09

标签: iphone objective-c uiview

我遇到了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 个答案:

答案 0 :(得分:3)

出现问题的是你在随机视图控制器上调用dismissModal而不是实际拥有模态控制器的对象。你想在didClickClose中做什么:是这个

[[self parentViewController] dismissModalViewControllerAnimated:NO];

另外,你不应该在Cocoa中使用小写字符开始你的类名。它们应该真正大写并且有一个前缀,例如ABCWeatherSetUp。前缀可以是您想要的任何内容,但通常您需要基于您的姓名,公司名称或项目名称的内容。

答案 1 :(得分:0)

您的viewEr与您尝试关闭的viewController不同,因为您正在创建viewContoller的新对象。

您可以在viewController类文件中创建viewContoller属性

weatherSetup.viewController = self.parentViewController;

注意:不要将viewContoller用作ivar,请使用不同的名称。

答案 2 :(得分:0)

而不是[self.parentViewController dismissModalViewControllerAnimated:NO]; 写下这个[self dismissModalViewControllerAnimated:NO];