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
使用标准的“取消”和/或“完成”按钮会更好,您希望使用哪个按钮主要取决于按钮和控制器的实际操作。