Swift 自定义工具栏实现

Swift custom toolbar implementation

我正在尝试实现自定义 UIToolbar。工具栏目前有 5 个按钮:3 个更改页面上的内容(保持相同的工具栏与选定的切换项目)和其他两个 segue 到模态视图控制器。

如何在几个不同的"pages"中分割code/views?

我目前有一个名为 ToolbarViewController 的 class,它使用不同的项目实例化工具栏。它有一个通用操作,可以切换按钮标题 "ON" 并根据点击的按钮执行不同的操作。每个后续 VC 需要该工具栏的只是子classes ToolbarViewController 并且工具栏是自动创建的,无需代码复制。

通过这种方式,如果用户在 tab1 中并按下 button1,程序就会崩溃,因为没有从 tab1 到 tab1 的 segue。我已经能够解决这个问题的一种方法是在 ToolbarViewController 中有一个初始化程序,它接收 "currentTab" 并且不允许该选项卡的 segues。这似乎非常低效。

我一直在考虑的另一个解决方案是拥有一个带有工具栏的 VC。通过按下一个按钮,我将能够更改 VC 的视图。这也有一个问题,我不能在故事板中设置 AutoLayout,因为 VC 不会继续任何事情,只是更改视图本身。当我需要一些到处都有约束的复杂视图时,这将成为一个问题。

我列出的两种方法中的任何一种是否可取?如果不是,我应该采取什么方法以及如何实施这些更改?

我认为您应该使用 TabBar 而不是工具栏,因为您可以实现许多相同的功能,我相信您正在尝试更轻松地实现。

但是,如果您决定保留模态转场,您可以为每次按下工具栏按钮设置操作。给你的工具栏按钮操作属性。

在Swift中:

UIBarButtonItem(title: "YourTitle", style: UIBarButtonItemStyle.Plain, target: self, action: #selector(YourVC.yourMethod(_:)))

func yourMethod() {
   (code here)
}

就您的 AutoLayout 问题而言,您应该将一个空视图放入 ToolBarViewController,然后使用 nib 创建自定义 UIView 子类。设置您希望每个视图在您的约束下查看笔尖的方式。然后,在代码中,将每个自定义 UIView 子类加载到 ToolBarViewController 的空视图中。

祝你好运!