dismissModalViewControllerAnimated:不会关闭页面?

时间:2009-11-29 23:21:06

标签: uiviewcontroller modal-dialog

我已经阅读了所有其他用户对问题的描述,但他们似乎并没有得出结果对我有用,或者他们以“我修好了他们 - 感谢你的帮助”结束,但他们忽略了分享他们的解决方这是我的代码提示和解散(所有关键对象都是我的应用程序委托的属性。我试图打开一个关于页面,然后返回到应用程序。我做错了什么?

目前的模态VC(有效):

-(IBAction) showInfoButton: (id) sender {
NSLog(@"%s", __FUNCTION__);

if( aboutViewController == nil ) {
    aboutViewController = [[[AboutViewController alloc] initWithNibName:@"About" bundle:[NSBundle mainBundle]] autorelease];
    [appDelegate.window addSubview: aboutViewController.view];
}

appDelegate.modalNavigationController = [[UINavigationController alloc] initWithRootViewController:aboutViewController];

[appDelegate.modalNavigationController presentModalViewController:appDelegate.modalNavigationController animated: YES];

}

我从关于视图控制器的解雇(不起作用):

-(IBAction) dismissAbout: (id) sender {
NSLog(@"%s", __FUNCTION__ );

[self dismissModalViewControllerAnimated:YES];

}

我试过动画'不',但这没有任何区别。我试图将我的代码与其他人的代码相匹配,但这没有任何区别。我四处走动,所以对任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:4)

XCode中的翻转控制器的默认模板,建议你需要在模态控制器中有一个委托,指向你的初始控制器。最简单的是如果您在xcode中创建一个新项目,请选择Utility应用程序并查看代码。

简而言之,这应该是主屏幕控制器

中的代码
- (IBAction)showInfo;
{    

    InfoScreen * aboutViewController = [[InfoScreen alloc] initWithNibName:@"InfoScreen" bundle:nil];
    aboutViewController.delegate =self;

    [self presentModalViewController: aboutViewController animated:YES];

    [aboutViewController release];
}

- (void)flipsideViewControllerDidFinish;
{

    [self dismissModalViewControllerAnimated:YES];
}

这是你的关于屏幕的后退按钮的动作

- (IBAction)done {
    [self.delegate flipsideViewControllerDidFinish];
    self.delegate = nil;
}

为了让委托响应flipsideViewControllerDidFinish等,代码还有一些更多,这与你要求解除的控制器没有关系,但查看Utility app模板将会说清楚。