在导航控制器中放置后门按钮

时间:2015-12-12 15:29:44

标签: ios swift uinavigationcontroller uinavigationbar uinavigationitem

我使用导航控制器,我想用自定义替换默认的后退按钮和文本。这是我的工作:

    navigationItem.backBarButtonItem = UIBarButtonItem(title: "back", style: UIBarButtonItemStyle.Plain, target: nil, action: nil)
    navigationController?.navigationBar.backIndicatorImage = UIImage(named: "BackCarretIcon")
    navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage(named: "BackCarretIcon")

在离开根视图控制器之前,这是为准备segue而设置的。

当出现下一个视图控制器时,图像显示在正确的位置,但是当推动动画完成时,后退按钮图像会向下移动一点。请参阅目标视图控制器的图像:

describing image

所以" BackCarretIcon"和"返回"标签不是垂直中心。怎么会??以及如何解决这个问题。

目标视图控制器的视图控制器生命周期方法中没有使用导航控件或导航项的代码。

修改

我在viewWillLayoutSubviews的目的地视图控制器中放了一个断点。在目标视图控制器出现在屏幕上之前,它会断开两次。当我在第二次休息后继续执行时,目标视图控制器被推到屏幕上(后面的carret在正确的位置)。当它完全被推到屏幕上时,后面的反光镜会向下跳几个点,到达错误的位置,viewWillLayoutSubviews再次断开。

我无法在后面的贝雷特位置正确的地方休息......

2 个答案:

答案 0 :(得分:0)

试试这个:

navigationController?.navigationItem.backBarButtonItem?.setTitlePositionAdjustment(UIOffset(horizontal: 0, vertical: -2), forBarMetrics: UIBarMetrics.Default)

答案 1 :(得分:0)

后退按钮是导航视图控制器的VC堆栈中第二个最后一个VC的属性。

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"BackBack" style:UIBarButtonItemStylePlain target:nil action:nil];

将它放在导航VC&中的子VC中。将另一个VC推到顶部。后退按钮将显示" BackBack"。这样做的正确方法是为每个孩子VC做这件事。在这里,用户将知道最后一个VC是关于" BackBack"。但尽量不要这样做。告知用户后退按钮将采取的位置。黑客返回按钮的方式可能不是最好的方式&可能会引起一些问题。

希望这有帮助。