试图按钮添加到UIPageViewController,但按钮不会显示出来,即使他们在视图层次

问题描述:

这里是我到目前为止的代码:试图按钮添加到UIPageViewController,但按钮不会显示出来,即使他们在视图层次

class WarmPushPageViewController: UIPageViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.dataSource = self 
     // Do any additional setup after loading the view. 
     let feedViewController = storyboard!.instantiateViewController(withIdentifier: "FeedViewController") 
     setViewControllers([feedViewController], direction: .forward, animated: false, completion: nil) 

     let hashtagsButton = UIButton(frame: CGRect(x: 8, y: self.view.frame.height - 30, width: 70, height: 20)) 
     hashtagsButton.setTitle("Hashtags", for: .normal) 
     hashtagsButton.tintColor = UIColor.blue 
     self.view.addSubview(hashtagsButton) 
     self.view.bringSubview(toFront: hashtagsButton) 

     let feedButton = UIButton(frame: CGRect(x: self.view.frame.width/2, y: self.view.frame.height - 30, width: 50, height: 20)) 
     feedButton.setTitle("Feed", for: .normal) 
     feedButton.tintColor = UIColor.blue 
     self.view.addSubview(feedButton) 
     self.view.bringSubview(toFront: feedButton) 

     let userButton = UIButton(frame: CGRect(x: self.view.frame.width-65, y: self.view.frame.height - 30, width: 50, height: 20)) 
     userButton.setTitle("User", for: .normal) 
     userButton.tintColor = UIColor.blue 
     self.view.addSubview(userButton) 
     self.view.bringSubview(toFront: userButton) 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


    /* 
    // MARK: - Navigation 

    // In a storyboard-based application, you will often want to do a little preparation before navigation 
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     // Get the new view controller using segue.destinationViewController. 
     // Pass the selected object to the new view controller. 
    } 
    */ 

} 

extension WarmPushPageViewController: UIPageViewControllerDataSource { 
    func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? { 
     if let _ = viewController as? UserViewController { 
      let feedViewController = storyboard!.instantiateViewController(withIdentifier: "FeedViewController") 
      return feedViewController 
     } else if let _ = viewController as? FeedViewController { 
      let hashtagsViewController = storyboard!.instantiateViewController(withIdentifier: "HashtagsViewController") 
      return hashtagsViewController 
     } 
     return nil 
    } 

    func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? { 
     if let _ = viewController as? HashtagsViewController { 
      let feedViewController = storyboard!.instantiateViewController(withIdentifier: "FeedViewController") 
      return feedViewController 
     } else if let _ = viewController as? FeedViewController { 
      let userViewController = storyboard!.instantiateViewController(withIdentifier: "UserViewController") 
      return userViewController 
     } 
     return nil 
    } 
} 

出于某种原因,一旦我得到的利润最终页面,标签的边缘显示:

Hashtag Label

标签也存在于我的视图层次,但我的假设是,这个问题可以躺在这里的某个地方:

View Hierarchy

最终目标是使用Sketch资源创建我自己的自定义按钮,其中在特定按钮上的内容会延伸到各自的页面。

  1. 在viewDidLoad视图帧的时间是实际的界面生成器默认帧。所以按钮可能会超出界限。尝试通过设置中心框按钮将可见或添加viewDidLoad中的按钮并更新viewDidLayoutSubviews方法中的按钮框架。
  2. UIPageViewController包含一个手势识别器。所以添加按钮也没用。 建议的方法来实现您的需求 而不是将UIButton添加到UIPageViewController,创建一个超级视图控制器(UIViewController)包含子视图作为UIButtons和UIPageViewController。

参考链接:https://spin.atomicobject.com/2016/02/11/move-uipageviewcontroller-dots/

iOS: UIPageViewController - Use button to jump to next page

+0

谢谢!将尝试这一点,让你知道:) – srinitude