为啥我的后退按钮在 iOS 7 上不起作用?
Posted
技术标签:
【中文标题】为啥我的后退按钮在 iOS 7 上不起作用?【英文标题】:Why does my back button not work on iOS 7?为什么我的后退按钮在 iOS 7 上不起作用? 【发布时间】:2013-10-03 21:20:51 【问题描述】:self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:self action:@selector(backButtonTapped)];
这就是我正在使用的代码。当我点击返回按钮时,backButtonTapped
方法永远不会被调用(我在其上放置了一个断点),我可以通过命令单击 backButtonTapped
文本来跳转到该方法,所以我知道它就在那里。
但是,如果我将其设置为 leftBarButtonItem
,则不会显示任何按钮,但点击该区域会使我返回。
【问题讨论】:
方法是否有参数?选择器是否有效? 对不起,错字,不,它没有。 选择器有效是什么意思? 如果选择器无效,应用会崩溃。 哦,它只是一个popViewController。 【参考方案1】:使用 self.navigationItem.backBarButtonItem
为 next 视图控制器(例如 SecondViewController)设置后退栏按钮项目,该控制器被推送到导航堆栈,而不是 当前 视图控制器(例如 FirstViewController)。
如果您想为当前位于堆栈中的视图控制器设置后退按钮,请像在当前视图控制器中使用 leftBarButtonItem
一样设置它,或者在推送此操作的视图控制器中使用 backBarButtonItem
堆栈上的新视图。
您使用leftBarButtonItem
时没有显示任何按钮的原因是因为您将标题留空而不是将其设置为“返回”之类的内容
例子:
// Inside SecondViewController.m
//
// Customize left bar button item for SecondViewController
//
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self.navigationController action:@selector(popToRootViewControllerAnimated:)];
或者
// Inside FirstViewController.m
//
// Customize the back bar button item for SecondViewController
//
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
请注意,您不必为 backBarButtonItem
设置目标或操作,因为它会做正确的事情。
【讨论】:
【参考方案2】:在您的 viewDidLoad 方法中尝试以下操作:
if ( [self.navigationController.viewControllers count] > 1 )
UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[backBtn setAdjustsImageWhenHighlighted:NO];
[backBtn setShowsTouchWhenHighlighted:YES];
[backBtn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
UIImage *backBtnImage = [UIImage imageNamed:@"back.png"]; // <-- replace with your own image
[backBtn setImage:backBtnImage forState:UIControlStateNormal];
[backBtn addTarget:self action:@selector(backButtonTapped) forControlEvents:UIControlEventTouchUpInside];
backBtn.frame = CGRectMake(0, 0, 40, 40);
UIBarButtonItem *backBarBtnItem = [[UIBarButtonItem alloc] initWithCustomView:backBtn];
self.navigationItem.leftBarButtonItem = backBarBtnItem;
【讨论】:
以上是关于为啥我的后退按钮在 iOS 7 上不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 tailwind css 在 iPhone ios 设备上不起作用?
为啥外部链接在构建后在 phonegap 应用程序上不起作用