ios 7显示第一个带后退按钮的导航控制器

ios 7显示第一个带后退按钮的导航控制器,ios,objective-c,Ios,Objective C,我将介绍一个新的视图表视图控制器作为导航控制器的根控制器。然后,我添加了一个带有选择器的后退按钮,但当我单击该按钮时,不会调用任何内容。我只是在导航控制器中显示它,因为我想在表视图上有后退按钮。以下是显示控制器的代码: UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil]; ATDetailTableViewController *detailViewController = [sb

我将介绍一个新的视图表视图控制器作为导航控制器的根控制器。然后,我添加了一个带有选择器的后退按钮,但当我单击该按钮时,不会调用任何内容。我只是在导航控制器中显示它,因为我想在表视图上有后退按钮。以下是显示控制器的代码:

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil];

    ATDetailTableViewController *detailViewController = [sb instantiateViewControllerWithIdentifier:@"ATDetailTableViewController"];
    detailViewController.propToDisplay = self.apartments[0];
    detailViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:detailViewController];
    [self presentViewController:nav animated:YES completion:nil];
然后,当加载detailviewcontroller时,我创建了不调用selector方法的bar button项:

- (void)viewDidLoad
{
    [super viewDidLoad];
    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back"
                                                                   style:UIBarButtonItemStyleBordered
                                                                  target:nil
                                                                  action:@selector(backPressed)];
    self.navigationItem.leftBarButtonItem = backButton;
}

- (void)backPressed
{
    NSLog(@"back pressed...");
    [self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];
}

这里的最佳实践是什么?我应该制作一个带有工具栏的视图控制器吗?此外,我还收到了警告:不建议在分离的视图控制器上显示视图控制器

问题是您将
目标
参数设置为
nil
,而不是
self
。你想要:

- (void)viewDidLoad
{
    [super viewDidLoad];
    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back"
                                                                  style:UIBarButtonItemStyleBordered
                                                                  target:self
                                                                  action:@selector(backPressed)];
    self.navigationItem.leftBarButtonItem = backButton;
}

你能解释一下目标公司是如何参与的吗?另外,我应该关注警告吗?它指定了对哪个对象调用操作。阅读
initWithTitle:style:target:action:
方法的文档。@pka2012目标是负责接收您将运行的操作的对象……下面有一个完整的答案,但我只想说,将此按钮标题为“Back”并称之为backButton是非常误导的。使用
initWithBarButtonSystemItem:target:action
使用标准的“取消”和/或“完成”按钮会更好,您希望使用哪个按钮主要取决于按钮和控制器的实际操作。