我有一个基于导航的应用,因此所有视图默认都有一个顶部导航栏。我已经到达了一个页面,默认情况下不会出于任何原因显示后退按钮,我需要以编程方式添加一个。不幸的是,后退按钮不会按预期消除模态视图。
我通过以下方式加载有问题的视图:
-(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];
}
如果另一组眼睛可以查看这些代码,并试图辨别我犯了什么错误,那将非常感激!我也非常愿意提供更多的信息/代码。
谢谢!
答案 0 :(得分:1)
你正在调用dismissModalViewControllerAnimated
,但根据你上面的代码,它有可能不会被呈现为模态,而是被推送到navStack,在这种情况下,dismissModalViewControllerAnimated
实际上不会忽略它。相反,你需要做popViewController
等。你应该围绕演示方式。你能否证实这不是问题的一部分?
另外,我认为你会打电话给[self dismissModalViewController...]
而不是parent
。
答案 1 :(得分:0)
以模态方式显示视图控制器不会将其包含在导航控制器的堆栈中。您必须提供自己的UI机制来关闭模态视图。在我看来,你解决模态视图控制器的解决方案应该主要起作用 - 尽管我认为你需要的只是backButton:
中的这一行:
[self dismissModalViewControllerAnimated:YES];