如何设置导航栏的后退项
Posted
技术标签:
【中文标题】如何设置导航栏的后退项【英文标题】:How to set navigation bar's back item 【发布时间】:2016-09-14 08:36:57 【问题描述】:我有一个导航栏,它是从另一个视图控制器模态显示的,所以后面的项目不显示,
我需要交叉溶解到第二个视图控制器,并在其上放置一个导航栏而不在第一个视图控制器上放置导航栏,在第二个视图控制器的导航栏上,后退按钮应该看起来与系统后退按钮完全相同。
【问题讨论】:
【参考方案1】:如果你有导航栏并且需要自定义返回按钮,你可以这样添加:
let button = UIBarButtonItem(title: "Back Title", style: UIBarButtonItemStyle.Plain, target: self, action: #selector(someMethod))
self.navigationItem.leftBarButtonItem = button
在您的选择器中,您可以关闭当前的 viewController 或调用其他一些返回方法
编辑
如果您需要一些具有标准推送过渡样式的自定义动画,您可以执行以下操作:
例如在情节提要中使用SecondViewController
id 创建viewController
在你的转换动作方法中做一些这样的:
func showSecondViewController()
guard navigationController != nil else
return
guard let secondViewController = storyboard?.instantiateViewControllerWithIdentifier("SecondViewController") else
return
navigationController!.pushViewController(secondViewController, animated: false)
UIView.transitionWithView(navigationController!.view, duration: 1, options: .TransitionCrossDissolve, animations: nil, completion: nil)
【讨论】:
是啊这个加了一个按钮,不过不像系统< Back
的风格,看着很奇怪
@BrightFuture Show 模态并不暗示标准后退按钮的存在。在这种情况下,您需要一个简单地关闭窗口的按钮
我需要模态显示的交叉溶解动画,如果我使用push,我可以更改默认动画吗?
@BrightFuture 我编辑了答案。尝试这样做,也许它会帮助你得到想要的结果
这个方法应该放在prepareForSegue
吗?【参考方案2】:
当你推送一个 ViewController 时,后面的项目会自动出现。当您以模态方式呈现它时,您会在初始导航控制器之外执行它,因此它的导航将被新的导航隐藏。
建议解决方案的版本:将第一个 UIViewController 嵌入 UINavigationViewController 并推送第二个而不是模态显示它。
【讨论】:
这似乎不是一个解决方案,也许你应该评论一下? 现在是一个解决方案。后退按钮是属于导航控制器的控件,如果不使用导航则必须自己重新创建后退按钮。 是的,这是一个解决方案,但我需要通过模态呈现交叉溶解动画 也许this WWDC 视频可以帮助您解决这个问题。以上是关于如何设置导航栏的后退项的主要内容,如果未能解决你的问题,请参考以下文章