0

我有一个基于导航的应用程序,因此所有视图默认都有一个顶部导航栏。我已经到达一个页面,无论出于何种原因,默认情况下都不显示后退按钮,我需要以编程方式添加一个。不幸的是,后退按钮并没有按预期关闭模态视图。

我通过以下方式加载有问题的视图:

-(IBAction) linkPress:(id)sender
{
    potentialUrl = [[NSURL alloc] initWithString:((Button*)sender).emailContent];

    webViewInst = [[WebView alloc] initWithNibName:@"WebView" bundle:nil url:potentialUrl];

    NSString *deviceType = [UIDevice currentDevice].model;
    if([deviceType isEqualToString:@"iPad"] || [deviceType isEqualToString:@"iPad Simulator"]){
        [self presentModalViewController:webViewInst animated:YES];
    }
    else {
        [self.navigationController pushViewController:webViewInst animated:YES];
    }    
}

我通过以下方式添加后退按钮:

UIBarButtonItem *MKbackBtn = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(backButton:)]; 
[self.navigationItem setLeftBarButtonItem:MKbackBtn];

以及后退按钮应采取的删除视图并返回上一个视图的操作:

-(IBAction)backButton:(id)sender
{
    UIViewController* parent = [self parentViewController];
    if(parent==nil) {
        parent = [self presentingViewController];
    }
    [parent dismissModalViewControllerAnimated:YES];
}

如果另一双眼睛可以检查这些代码并尝试辨别我犯了什么错误,那将不胜感激!我也非常愿意提供更多信息/代码。

谢谢!

4

2 回答 2

1

您正在调用dismissModalViewControllerAnimated,但根据您上面的代码,它可能不会显示为模态,而是被推送到 navStack 上,在这种情况下dismissModalViewControllerAnimated实际上不会关闭它。相反,您需要做popViewController等。您应该围绕演示工具进行封装。你能确认这不是问题的一部分吗?

另外,我想你会打电话[self dismissModalViewController...]而不是parent.

于 2013-07-31T21:58:37.663 回答
0

以模态方式显示视图控制器不会将其包含在导航控制器的堆栈中。您必须提供自己的 UI 机制来关闭模式视图。在我看来,您解除模态视图控制器的解决方案应该大部分都可以工作——尽管我认为您所需要的只是以下一行backButton:

[self dismissModalViewControllerAnimated:YES];
于 2013-07-31T21:58:31.197 回答