Swift 自定义工具栏实现
Posted
技术标签:
【中文标题】Swift 自定义工具栏实现【英文标题】:Swift custom toolbar implementation 【发布时间】:2015-07-28 17:23:20 【问题描述】:我正在尝试实现自定义 UIToolbar。该工具栏目前有 5 个按钮:3 个更改页面上的内容(保持相同的工具栏并选择切换项)和其他两个转为模态视图控制器。
如何在几个不同的“页面”中分割代码/视图?
我目前有一个名为 ToolbarViewController 的类,它用不同的项目实例化工具栏。它有一个通用动作,可以将按钮标题切换为“ON”,并根据被点击的动作执行不同的动作。需要该工具栏的每个后续 VC 都只是 ToolbarViewController 的子类,并且工具栏会自动创建而无需代码复制。
通过这种方式,如果用户在 tab1 中并按下按钮 1,程序会崩溃,因为从 tab1 到 tab1 没有 segue。我能够解决此问题的一种方法是在 ToolbarViewController 中有一个初始化程序,它接收“currentTab”并且不允许该选项卡的 segues。这似乎非常低效。
我一直在考虑的另一个解决方案是拥有一个带有工具栏的 VC。通过按一个按钮,我将能够更改该 VC 的视图。这也有一个问题,我不能在情节提要中设置 AutoLayout,因为 VC 不会继续任何事情,只会改变视图本身。当我需要一些到处都有约束的复杂视图时,这将成为一个问题。
我列出的 2 种方法中的任何一种都可取吗?如果不是,我应该采取什么方法以及如何实施这些更改?
【问题讨论】:
【参考方案1】:我认为您应该使用 TabBar 而不是工具栏,因为您可以实现许多相同的功能,我相信您正在尝试更轻松地实现。
但是,如果您决定保留模态序列,则可以为每个工具栏按钮按下设置操作。为您的工具栏按钮提供操作属性。
在斯威夫特中:
UIBarButtonItem(title: "YourTitle", style: UIBarButtonItemStyle.Plain, target: self, action: #selector(YourVC.yourMethod(_:)))
func yourMethod()
(code here)
就您的 AutoLayout 问题而言,您应该在 ToolBarViewController 中放置一个空视图,然后使用 nib 创建自定义 UIView 子类。设置您希望每个视图在您的约束下查看笔尖的方式。然后,在代码中,将每个自定义 UIView 子类加载到 ToolBarViewController 上的空视图中。
祝你好运!
【讨论】:
以上是关于Swift 自定义工具栏实现的主要内容,如果未能解决你的问题,请参考以下文章