我有一个带有容器视图的viewcontroller errno
,在上半部分,它有一个嵌入式的pageviewcontroller (FirstVC.swift)
,以及一个在下半部分有3个按钮的视图。
首先,唯一可见的按钮是中间按钮,其他两个是隐藏的。如果用户到达最后一页,则应显示其他两个按钮。如何传递使按钮出现的bool值?
在我的(SecondPageVC.swift)
SecondPageVC.swift
答案 0 :(得分:2)
protocol PageDelegate { func hasReachLastPage(hasReached: Bool) }
在SecondPageVC中创建一个委托变量,如下所示:weak var delegate: PageDelegate?
在你的pageViewController func上调用你的func hasReachLastPage(hasReached: Bool)
:
func pageViewController(pageViewController: UIPageViewController,
viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
if index == myViewControllers.count-1{ //if last page
delegate?.hasReachLastPage(true)
}
在您的FirstVC上,它会采用您刚才创建的协议:FirstVC : PageDelegate
然后,当您拥有SecondPageVC的实例时,在FirstVC上,您将把委托变量设置为FirstVC,如下所示:SecondPageVC.delegate = self
您说FirstVC将处理SecondPageVC委托方法
最后总是在你的FirstVC上,你必须通过隐藏或不是你的两个按钮来实现func hasReachLastPage(hasReached: Bool)
的正文:
func hasReachLastPage(hasReached: Bool) {
if hasReached {
// Unhide two buttons
} else {
// Hide buttons or whatever
}
}
这是您实施委托模式的方法。它是一种非常有用的东西,对于在视图控制器之间传递数据非常有用。
答案 1 :(得分:0)
因此,如果我理解正确,您只想将此FirstVC
属性传递给SecondPageVCDelegate
的实例?如果是这样,我建议您使用方法secondPageVCDidReachLastPage:
定义协议FirstVC
。分配代理可以在准备{{1}}