1

にしているにもかかわらず、ここではこれまでに私のコードです表示されません。は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

最後の目標は、特定のボタンの内側をタッチすると、それぞれのページにつながるスケッチアセットを使用して独自のカスタムボタンを作成することです。

答えて

0
  1. viewDidLoadビューフレームの時点では、実際のインタフェースビルダーのデフォルトフレームです。ボタンが範囲外に届く可能性があります。センターフレームボタンを表示するように設定してみるか、viewDidLoadにボタンを追加し、viewDidLayoutSubviewsメソッドのボタンフレームを更新します。
  2. UIPageViewControllerにはジェスチャ認識機能が含まれています。ボタンを追加することも無駄です。 推奨する方法 UIPageViewControllerにUIButtonを追加する代わりに、スーパービューコントローラ(UIViewController)にUIButtonsおよびUIPageViewControllerとしてのサブビューを作成します。

参考リンク:https://spin.atomicobject.com/2016/02/11/move-uipageviewcontroller-dots/

iOS: UIPageViewController - Use button to jump to next page

+0

ありがとうございます!これを試し、あなたに知らせる:) – srinitude

関連する問題