如何在UIPageViewController顶部添加按钮?

时间:2018-09-05 18:01:06

标签: ios swift button uibutton uipageviewcontroller

我有一个包含3页的页面视图控制器。我希望在所有按钮上方都可见一个“浮动”按钮。我曾尝试对PageView使用容器视图,但这似乎不起作用。我还能如何使按钮在所有3页上保持可见?

我已尝试使用此问题中所述的容器视图: UIButton across all pages of UIPageViewController

2 个答案:

答案 0 :(得分:0)

您可以创建一个单独的ViewController,添加一个容器视图,按住Ctrl并单击并拖动到pageViewController中,然后单击“嵌入”。将任何按钮添加到新的单独的ViewController中,并将ViewController与新的swift类相关联,并在那里管理按钮功能。

如果pageViewController当前是初始ViewController(如果使用导航控制器,则为根视图),只需对其进行更改,以使单独的ViewController现在是初始viewController,其中包含嵌入式PageViewController和所需的任何按钮。滚动时,它们将保持静止在视图顶部。

如果您使用的是Storyboard,它应该看起来像这样:

enter image description here

答案 1 :(得分:0)

除了我的其他答案,您还可以以编程方式添加按钮。

声明:

let button = UIButton()

,如果需要,创建一个名为setupView()的函数

private func setupView() {

//Here we set up the size and attributes of the button.
    currencyButton.frame = CGRect(x: self.view.frame.size.width - 60, y: 60, width: 50, height: 50)
    currencyButton.backgroundColor = UIColor.red
    currencyButton.setTitle("YourButtonTitle", for: .normal)
    currencyButton.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
    self.view.addSubview(currencyButton)
}

并使用按钮:

@objc func buttonAction(sender: UIButton!) {
   //Do whatever.
   print("ButtonTapped")
}

最后,确保在viewDidLoad()中setupView()被调用:

 override func viewDidLoad() {
    super.viewDidLoad()

    setupView()

    self.delegate = self
    configurePageControl()
    self.dataSource = self

}

当您滚动浏览页面视图时,此按钮将保留在屏幕上。 让我知道这是否回答了您的问题。