カテゴリ > Swift
[Swift3] Tab Bar の中にTableViewを入れる

swift_base

ほぼ自分用メモに等しい内容ですが投稿。
いつもTableViewをコードで追加した際の、シーン移動がよくわからなくなるのと、TabBarの中にTableViewをいれるアプリを作る頻度が高いので残しておきます。

1 Tab Bar Controller をStoryboardに放り込んで、最初にあったViewControllerを削除

もちろんsingle view application でスタートしています。
あと、紛らわしいので、ViewController.swiftのファイルも削除しちゃった。

main_storyboard_-_edited

2 tabBarControllerの Is Initial View Controller にチェックを入れる

 ※アプリ起動時に最初の画面となる

main_storyboard

3 Item 1 Scene 用のswiftファイルを用意する

– File > New > File…
– Cocoa Touch Class を選択(なんでswiftファイルじゃねーんだろうか。。)
– てきとーなClass名にし、Subclass of をUIViewController にする

screenshot_2016_12_08_23_02

4 Item 1 Scene のCustomClassで、いま作ったばかりの firstViewController を紐付ける

main_storyboard_-_edited

5 追加した firstViewControllerにて、UITableView関連のメソッドを実装する

具体的には
UITableViewDelegate, UITableViewDataSource 
を追加、

あと、UITableViewの必須系関数を追加

 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
 func numberOfSections(in tableView: UITableView) -> Int
 func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String?
 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)

とかとか。。

6 Cellがタップされた時に表示するViewControllerを追加しておく

そんで、Storyboard ID をふっておく

main_storyboard_-_edited

7 firstViewController.swift で、セルをタップされたときの処理で、画面遷移を実装

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let nextVC = self.storyboard?.instantiateViewController(withIdentifier: "detailView")
        present(nextVC!, animated: true, completion: nil)
        self.navigationController?.pushViewController(nextVC!, animated: true)
}

これで、とりあえず めくれてDetail Viewが表示されるTableViewが完成
画面遷移は presentメソッドを書く前に他のアニメーションに変更可能。

nextVC?.modalTransitionStyle = .partialCurl

あとは .flipHorizontal や、.crossDissolve など。

ここまででとりあえずTableViewの表示と遷移が完成

glass

余談

Item 1 Scene を選択し、
Editor > Embed in > Navigation View Controller
を選択すると、その名の通りUINavigationController が組み込まれ、Modalじゃなくてよくありがちな右にニュッと動くTableViewのシーンができる。

pushのときの画面遷移のメソッドは
self.navigationController?.pushViewController()
main_storyboard_-_edited

おわり😲

 

2016-12-10 | Posted in SwiftNo Comments » 


関連記事

Comment





Comment



*