这是我调用包含在UINavigationController中的新视图控制器的代码。我想在restaurantResults控制器上有一个简单的后退按钮。我的选择器似乎不起作用。我尝试过使用pop命令。这些工作是否可以使用presentViewController,而不是任何类型的推送?
非常确定我的选择器现在是错的,因为它说的是self.navigationController,它可能不对。
这是我调用新视图控制器并设置后退按钮的地方:
- (void)searchBarSearchButtonClicked:(UISearchBar *)foodNearSearchBar
{
restaurantsViewController *restaurantResults = [[restaurantsViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:restaurantResults];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back"
style:UIBarButtonItemStyleBordered
target:nil
action:@selector(backPressed:)];
restaurantResults.navigationItem.leftBarButtonItem = backButton;
[self presentViewController:navController animated:YES completion:Nil];
}
这是我的选择器:
-(void)backPressed: (id)sender
{
[self.navigationController popViewControllerAnimated: YES]; // or popToRoot... if required.
}
我也尝试过:
- (void)backPressed:(id)sender
{
[self dismissViewControllerAnimated:YES completion:nil];
};
答案 0 :(得分:2)
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back"
style:UIBarButtonItemStyleBordered
target:nil
ction:@selector(backPressed:)];
restaurantResults.navigationItem.leftBarButtonItem = backButton;
这些代码应该在restaurantsViewController上使用; 目标是自我。
答案 1 :(得分:0)
//这有效-做到了 //您可以在要查看后退按钮的视图中创建后退按钮-
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Login"
style:UIBarButtonItemStylePlain
target:self
action:@selector(backPressed:)];
self.navigationItem.leftBarButtonItem = backButton;
[self.navigationItem setHidesBackButton:NO];
//只需在后退按钮所在的viewcontroller中关闭视图控制器-如下-
- (void)backPressed:(id)sender
{
[self dismissViewControllerAnimated:YES completion:nil];
};
答案 2 :(得分:0)
如果您使用的是UINavigationController
,并且想要默认的iOS后退按钮,则无需以编程方式进行设置。实际上没有什么可添加的,它是默认内置的。
通过将推入导航控制器,将其放置在导航控制器的控制器堆栈中,因此iOS将在您浏览导航时添加导航栏和后退按钮堆栈。
如果它不起作用,请检查以下内容:
您要从中推送的控制器是UINavigationController的根。您可以通过代码或情节提要中进行设置。 (没关系)
您是从导航控制器而不是视图控制器推送的。从本质上讲,您必须执行navigationcontroller.push()
而不是self.push()
,否则它将不起作用。 (取决于self
在这里,但是我很确定您的错误在这里)
我看到您使用的是presentViewController
模态,如果这是您的意图,那很好,但是如果您想要导航堆栈,为什么不将self
嵌入到导航器中首先,隐藏其导航栏,然后将您的下一个控制器推入即可。
那样,您不必手动创建后退按钮,而让iOS处理所有事情。
如果必须那样操作,则只能在“展示”时“关闭”,而在“按下”时“弹出”。但是我没有足够的信息来知道您的为什么不起作用。尝试一些事情,并给我们更多反馈。但是从我看来,您正在寻找比必要的更复杂的解决方案。
我也真的会从一个简单的按钮说“关闭”开始,然后在尝试将其嵌入到带有项目的栏中之前,看看它是否能以这种方式工作。这样一来,您就可以解决一个问题,一次解决一个新概念