点击backBarButtonItem时消息怎样拦截
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了点击backBarButtonItem时消息怎样拦截相关的知识,希望对你有一定的参考价值。
参考技术A 有一个方法可以解决,但解决的方法就是不使用默认的backbarbuttonitem ,也就是不使用当点击back后的事件响应。而是自定义back按钮。使用leftbarbuttonitem 来模拟back的回退动作。我的意思是,你可以写一个超类superviewcontroller,在这个超类中,自定义一个按钮来充当back按钮,将这个按钮作为leftbarbuttonitem放到导航栏上。在超类中公开一个back方法,可以加一个默认的实现,就是pop到上一层。在需要自定义实现你上述说的控制器中,继承superviewcontroller,并重写超类中的back方法,在这个方法中你可以随意的处理你的逻辑。
如何使用 SWIFT 处理导航栏中 BackBarButtonItem 的点击事件?
【中文标题】如何使用 SWIFT 处理导航栏中 BackBarButtonItem 的点击事件?【英文标题】:How to handle click event of BackBarButtonItem in nav bar using SWIFT? 【发布时间】:2016-02-15 08:18:08 【问题描述】:当导航栏后退按钮被按下时,我试图处理一个动作。然而我已经为另一个 viewController 设置了 segue。
虽然我需要在用户点击 5 次后退按钮时保持 count。为此,我已经实现了这些东西。
在此我为导航栏后退按钮设置了一个操作:
class DetailViewController:UIViewController, UITabBarDelegate, UINavigationControllerDelegate
override func viewDidLoad()
super.viewDidLoad()
self.navigationItem.backBarButtonItem?.action = "perform"
self.navigationController?.delegate = self
func perform()
if count == 5
count=0
print("Back Button pressed 5 times")
我在哪里做错了?
【问题讨论】:
你确定 backBarButtonItem 不是 Nil 吗?可能值得设置一个断点并确保您没有将其接线错误。 谢谢,现在可以了。 【参考方案1】:import UIKit
class ViewController: UIViewController
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let backItem = UIBarButtonItem(title: "Back", style: .Plain, target: self, action: "tapToBack")
self.navigationItem.leftBarButtonItem = backItem
func tapToBack()
var times = 0
times++
NSLog("tap times:%d", times)
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
【讨论】:
【参考方案2】:应该是这样实现的:
override func viewDidLoad
super.viewDidLoad()
self.navigationItem.hidesBackButton = true
let newBackButton = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Bordered, target: self, action: "back:")
self.navigationItem.leftBarButtonItem = newBackButton;
func back(sender: UIBarButtonItem)
// your code
【讨论】:
以上是关于点击backBarButtonItem时消息怎样拦截的主要内容,如果未能解决你的问题,请参考以下文章
通过操作将 UIBarButtonItem 设置为 backBarButtonItem,不起作用
navigationItem backBarButtonItem 标题
MFC使用ListControl时,第一次左键点击ListControl的列表时无法触发NM_CLICK消息,点击第二次时才能触发