【问题标题】:how to change the navigation back item function ,back to rootView如何更改导航返回项功能,返回rootView
【发布时间】:2017-05-12 06:57:31
【问题描述】:

我有问题。

我使用show(vc) 来展示一个视图控制器。

vc1 --> vc2 --> vc3

当用户单击 vc3 上的后退按钮时,我想将用户从 vc1 重定向,以实现我使用下面提到的代码。

 override func viewDidLoad() {
    super.viewDidLoad()

    self.navigationItem.hidesBackButton = true
    let newBackButton = UIBarButtonItem(title: "<", style: UIBarButtonItemStyle.plain, target: self, action: #selector(backToRoot(sender:)))
    self.navigationItem.leftBarButtonItem = newBackButton 
}

func backToRoot(sender: UIBarButtonItem) {

    _ = self.navigationController?.popToRootViewController(animated: true)
}

我想要返回按钮的默认图像,而不是自定义按钮。

有什么办法可以做到吗?

【问题讨论】:

  • 感谢 Parth Bhatt 编辑。

标签: ios swift cocoa-touch uinavigationcontroller


【解决方案1】:

我今天刚做的。我发现无法更改系统后退按钮的操作。为了看起来像系统风格,我画了一张相同的图片(截图模拟器,并在photoshop中更改)。代码如下:

let button: UIButton = UIButton(type: .system)

height的默认大小是30,width是你设置的任何值

button.frame = CGRect(x: 0, y: 0, width: 80, height: 30)
button.setImage(UIImage(named: "BackButton"), for: .normal)

默认字体如下:

button.setTitle("Back", for: .normal)
button.titleLabel?.font = UIFont(name: "AvenirNext", size: 15)

这就是诀窍,你需要找出与系统相同的位置,以下是我的结果,我调整了很多次。我希望你可以使用,但我认为你需要找到自己的尺寸

button.imageEdgeInsets = UIEdgeInsetsMake(0, -43, 0, 0)
button.titleEdgeInsets = UIEdgeInsetsMake(0, -33, 0, 0)

button.addTarget(target, action: action, for: .touchUpInside)
let barButton = UIBarButtonItem(customView: button)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 2016-05-05
    相关资源
    最近更新 更多