2017-03-20 6 views
3

airbnb full airbnb fullAirbnb iOS App Exploreタブの作成方法は?


私はAirbnbアプリからのスクリーンショットと同様のフィードページを作成しようとしています。私はUITableViewControllerで始まり、スクロールのヘッダーにアニメーションを追加しました。ヘッダーはそこのターコイズ色の領域です。

これらのページタブ(「あなた」、「家」、「体験」、「場所」)を追加して、ビューをどのように構成するべきか混乱させたいと思います。それぞれのタブはtableViewです今のページのタブのない私の構造は次のとおりです。

    1. UITabBarController
    2. UIViewControllerUIViewヘッダ、UITableViewコンテンツが含まれています)

    私は考えることができるいくつかのオプションがあります。ページタブはそれぞれUITableViewDataSourceなので、タブをクリックするだけでdataSourceとの変更になります

  1. UIViewControllerUIScrollView contentViewが含まれていますので、タブをクリックすると、私の研究に基づいて、コントローラ

にcontentViewとaddChildViewControlleraddSubViewであることがscrollView内のtableViewを置くように、オプション#2はお勧めしません。しかし、オプション1では、すべてのtableViewのデキューに同じcellIDが必要ですか?ハードコードを鳴らします。このシナリオのベストプラクティスを教えてください!ありがとう。

+0

私は最初のオプションに行きますが、コレクションビューをtableViewの代わりに使用しようとしました –

答えて

1

恐らく、コンテナビューの使用を検討する必要があります。このようにして、あなたはあなたが描写したそれぞれの事例について別々の見解を持つことになります。あなたのための

例:ストーリーボードで

enter image description here

と聞くが、ビューを切り替えるコードです。

class ViewController: UIViewController { 
    @IBOutlet weak var containerViewA: UIView! 
    @IBOutlet weak var containerViewB: UIView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    @IBAction func showComponent(_ sender: UISegmentedControl) { 
     if sender.selectedSegmentIndex == 0 { 
      UIView.animate(withDuration: 0.5, animations: { 
       self.containerViewA.alpha = 1 
       self.containerViewB.alpha = 0 
      }) 
     } else { 
      UIView.animate(withDuration: 0.5, animations: { 
       self.containerViewA.alpha = 0 
       self.containerViewB.alpha = 1 
      }) 
     } 
    } 
} 
+0

ありがとうございました!よく考えましたが、ヘッダーにアニメーションをリンクするにはどうすればよいですか?なぜなら、containerView内でtableViewをスクロールすると、ヘッダが拡大縮小されるからです。これは 'UIScrollView'を使用して私のオプション#2につながります。 – yonasstephen

+0

デリゲートメソッドを使用して、コンテナビューのヘッダをトリガします。 –

+0

hmm私はそれを最初に打つことを許可します:) – yonasstephen

関連する問題