当用户位于uipageviewcontroller的最后一页时,设置按钮的可见性

时间:2017-10-15 15:11:22

标签: ios swift xcode

我有一个带有容器视图的viewcontroller errno,在上半部分,它有一个嵌入式的pageviewcontroller (FirstVC.swift),以及一个在下半部分有3个按钮的视图。 首先,唯一可见的按钮是中间按钮,其他两个是隐藏的。如果用户到达最后一页,则应显示其他两个按钮。如何传递使按钮出现的bool值?

在我的(SecondPageVC.swift)

SecondPageVC.swift

2 个答案:

答案 0 :(得分:2)

  1. 定义一个名为PageDelegate的协议,如下所示:
  2. protocol PageDelegate { func hasReachLastPage(hasReached: Bool) }

    1. 在SecondPageVC中创建一个委托变量,如下所示:weak var delegate: PageDelegate?

    2. 在你的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) }

    3. 在您的FirstVC上,它会采用您刚才创建的协议:FirstVC : PageDelegate

    4. 然后,当您拥有SecondPageVC的实例时,在FirstVC上,您将把委托变量设置为FirstVC,如下所示:SecondPageVC.delegate = self 您说FirstVC将处理SecondPageVC委托方法

    5. 最后总是在你的FirstVC上,你必须通过隐藏或不是你的两个按钮来实现func hasReachLastPage(hasReached: Bool)的正文:

      func hasReachLastPage(hasReached: Bool) { if hasReached { // Unhide two buttons } else { // Hide buttons or whatever } }

    6. 这是您实施委托模式的方法。它是一种非常有用的东西,对于在视图控制器之间传递数据非常有用。

答案 1 :(得分:0)

因此,如果我理解正确,您只想将此FirstVC属性传递给SecondPageVCDelegate的实例?如果是这样,我建议您使用方法secondPageVCDidReachLastPage:定义协议FirstVC。分配代理可以在准备{{1}}

的segue方法时完成