我正在尝试覆盖导航控制器中后退按钮的默认操作.我已经在自定义按钮上提供了一个目标操作.奇怪的是,当通过backbutton属性分配它时,它不会注意它们,它只是弹出当前视图并返回到根:
UIBarButtonItem *backButton = [[UIBarButtonItem alloc]
initWithTitle: @"Servers"
style:UIBarButtonItemStylePlain
target:self
action:@selector(home)];
self.navigationItem.backBarButtonItem = backButton;
Run Code Online (Sandbox Code Playgroud)
当我把它通过leftBarButtonItem在navigationItem调用我的动作,但是那么按钮看起来像一个普通的圆而不是一个带箭头的后面一个:
self.navigationItem.leftBarButtonItem = backButton;
Run Code Online (Sandbox Code Playgroud)
在返回根视图之前,如何让它调用我的自定义操作?有没有办法覆盖默认的后退操作,还是有一种方法在离开视图时总是被调用(viewDidUnload不这样做)?
iphone cocoa-touch uinavigationcontroller uibarbuttonitem ios
我需要在导航栏上按下后退按钮(返回上一屏幕,返回父视图)按钮时执行一些操作.
是否有一些方法可以实现捕获事件并触发一些操作以在屏幕消失之前暂停和保存数据?
我无法更改popover演示文稿的大小.这是我到目前为止所拥有的
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) // func for popover
{
if segue.identifier == "popoverView"
{
let vc = segue.destinationViewController
let controller = vc.popoverPresentationController
if controller != nil
{
controller?.delegate = self
controller?.sourceView = self.view
controller?.sourceRect = CGRect(x:CGRectGetMidX(self.view.bounds), y: CGRectGetMidY(self.view.bounds),width: 315,height: 230)
controller?.permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0)
}
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,所有这一切都是以弹出窗口为中心并移除箭头,这很好.但它没有调整容器的大小.任何帮助将不胜感激.谢谢.
当我使用preferredContentSize时,我收到错误"无法分配给属性:'preferredContentSize'是不可变的"
当用户单击后退按钮时,我想显示带有确认的警报。这就是我尝试添加动作的方式。
self.navigationItem.hidesBackButton = true
let newBackButton = UIBarButtonItem(title: "<", style: UIBarButtonItemStyle.plain, target: self, action: #selector(ViewController.save(sender:)))
self.navigationItem.leftBarButtonItem = newBackButton
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我想要默认的后退按钮图像而不是自定义标题。怎么做 ?
我也尝试了以下代码:
self.navigationItem.backBarButtonItem?.action = #selector(ViewController.save(sender:))
Run Code Online (Sandbox Code Playgroud)
...但动作也没有执行。
我有方法检查何时按下导航栏中的后退按钮,并且该方法返回到根页面,但由于某种原因,它只self.navigationController?.popToRootViewController(animated: true)返回到上一页。有谁知道按下导航栏后退按钮时如何返回根目录?
override func didMove(toParentViewController parent: UIViewController?) {
super.didMove(toParentViewController: parent)
if parent == nil{
self.navigationController?.popToRootViewController(animated: true)
}
}
Run Code Online (Sandbox Code Playgroud)
在这个问题中,他问如何使用什么方法来自定义后退按钮。在我的代码中,它能够检测用户何时按下后退按钮,并 self.navigationController?.popToRootViewController(animated: true)
假设将页面带回根页面,但是系统中存在某些内容阻止我的应用程序返回根页面。