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
。