FA_UISplitViewController 1.1.0

FA_UISplitViewController 1.1.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后一个发布2019年5月
SPM支持 SPM

Pierre Laurac 维护。



  • 作者
  • Pierre Laurac

FA_UISplitViewController

此 Pod 的目标是提供一个用于 UISplitViewController 的简单汉堡菜单。该菜单可以决定是否在主视图中使用新的控制器。如果当前主控制器类型相同,则该控制器不会在用户动作时实例化新的视图控制器。

项目中提供的示例解释了如何使用此控制器。

FA_UISPlitViewController 成为根视图控制器。您在 Storyboard 中定义两个控制器之间的转场

  • 默认显示的主控制器(预期是 UISplitViewController)。
    • 转场标识符:loadMaster
  • 将出现在主控制器之上的菜单(可以是任何 UIViewController)。
    • 转场标识符:loadMenu

主控制器

主控制器可以遵守 MillefeuilleMasterViewMinimalImplementation 协议并实现以下方法

func selectionChangedInMenu(_ object: AnyObject?)

FA_UISplitViewController 通知主视图控制器菜单中已进行了选择。该对象是菜单可以传递给主控制器的东西。这可以用来知道在菜单中点击了什么来更新您的 UI。

func detailIsDisplayingItem() -> Bool

此方法由 UISplitViewController 调用,以了解它是否应该折叠辅助控制器。

菜单控制器

菜单控制器应该继承自 MillefeuilleMenuViewController(它继承自 UIViewController),它增加了一个属性来访问 MillefeuilleViewController

千层饼菜单视图控制器

由于菜单继承自这个控制器,我们可以调用千层饼视图控制器。

self.millefeuille?.selectionWasMade(hide: true)

这是为了向 MillefeuilleMenuViewController 指示已进行了选择。

代理方法

菜单还应遵守 MillefeuilleLeftControllerSelectionProtocol 并实现以下方法

func shouldPassObject() -> AnyObject?

一个询问左控制器是否希望将一个对象传递给 splitViewcontroller 的主控制器的代理方法

  • 这个方法在左控制器调用 selectionWasMade 时被调用
    • 如果没有必要改变主控制器类型,则立即调用
    • 在执行单元格的segue之后,将数据提供给新创建的控制器
func shouldPerformSegue() -> Bool

一个询问左控制器当前主控制器是否正确的代理方法,并且

  • 千层饼视图控制器应执行segue以替换主视图控制器
func performSegue()

调用以触发用于创建新视图控制器的segue的方法

流程

请确保在Storyboard中将您菜单和主要控制器连接到正确的segue名称。 FA_UISplitViewController 将为您实例化控制器。

打开菜单

主要控制器可以发布一个通知来打开菜单 NotificationCenter.default.post(name: Notification.Name(rawValue: "MILLEFEUILLE_SHOW_MENU_NOTIFICATION_NAME"), object: nil)

响应用户操作

当菜单有点击动作时,它会调用 selectionWasMade。 FA_UISplitViewController将会按照以下顺序调用这些方法

  • shouldPerformSegue:是否需要执行 segue。菜单应该知道是否有新的用于不同视图控制器的视图控制器。
    • performSegue:允许菜单调用所需的 segue。
  • shouldPassObject:菜单是否想要通过传递对象与主控制器交互
    • selectionChangedInMenu:在主控制器上调用此方法
  • 如果隐藏参数为 true,则隐藏菜单。

注意事项

此控制器应根据需要支持任何UIViewcontroller