最初は「テーブルビューのセルに新しいテーブルビューを作る」という意味がわかりませんでしたが、iPhoneのSafariのブックマークのような感じで、セルをタップしたら下の階層データを表示する新しいテーブルビューに遷移するということなら、さほど難しい話ではありません。
普通にナビゲーションコントローラーとテーブルビューコントローラーを使って、セルをタップしたら別のビューコントローラーに遷移する画面を作れるようになったら、その遷移先を別のビューコントローラーにするのではなく、自分自身のテーブルビューコントローラーに遷移するようSegueを接続すればいいです。
そして、そのテーブルビューコントローラーに自分が階層ツリーのどの位置にいるかを表すプロパティを作り、テーブル表示メソッド(cellForRowAtIndexPath)で現在の階層配下のデータを表示し、セルをタップした時に遷移先のテーブルビューコントローラを設定する処理(prepareForSegue)でプロパティに新しい階層位置を設定すればよいです。
テーブルビューコントローラーのコーディングサンプルを添付します。このサンプルは、簡単のために階層位置を表すプロパティを新しく作る替わりに、テーブルビューコントローラーのtitleプロパティを利用しています。
Swift
1import UIKit
2
3class TableViewController: UITableViewController {
4
5 override func viewDidLoad() {
6 super.viewDidLoad()
7
8 if self.title == nil {
9 self.title = ""
10 }
11 self.title = "\(self.title!)/"
12 }
13
14 override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
15 return 1
16 }
17
18 override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
19 return 10
20 }
21
22 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
23 let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
24 cell.textLabel?.text = "\(self.title!)R\(indexPath.row+1)"
25 return cell
26 }
27
28 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
29 let cell = sender as! UITableViewCell
30 segue.destinationViewController.title = cell.textLabel?.text
31 }
32}
33
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/10/28 17:09
2015/10/31 11:24
退会済みユーザー
2015/11/22 05:10
2015/11/22 14:43
退会済みユーザー
2015/11/22 17:05