内容
swift,2つのテーブルビューとテキスト表示 アイフォンアプリ
テーブルビュー>テーブルビュー2>テキストを表示するアイフォンアプリの作り方です。クラス名や変数名が規則的ではないので、わかりにくくなっています。すいません。
後日、もう少し理解しやすい改訂版を作成予定?
前回の「swift, tableviewのセットアップ(これだけでは何もしないアプリ)iPhone 」
の拡張版です。
参考動画は
<概要>
2つのTableViewControllerを使ってテキスト表示するアイフォンアプリ
<概略手順>
1.テンプレートのstoryboardを削除して新規にNavigationControllerを追加して、更にTableViewControllerを追加(これで2つのTableViewControllerになる)、そしてViewControllerを追加
Tableのところからドラッグしてsegueのshowを選択
次は2つ目のTableViewControllerのクラスを作成
Stringの構造体を新規ファイルで作成します。
これは他の方法でも構いません。
2.prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)を各TableViewControllerのクラスに設定
この段階で実行しても2つ目のTableViewControllerに表示されないのは、
FirstTableViewControllerにprepareForSegue内に値を入れていませんでした。
ストーリーボードでセグウェイのidentifyを設定していないのは一つだけだからだと思います。複数のセグウェイがある場合は設定が必要なはず(?多分です)
3 テキストを表示するViewControllerのクラスを作成します。
4テキスト表示するために再度、構造体のために新規ファイルを作成します。これは他の方法でも構いません。
5.2つのテーブルビューとViewControllerによるテキスト表示でした。
お疲れ様でした。
一つ目のテーブルビューのコードです。このコードで、2つ目のテーブルのセルと最後のテキスト表示を設定しています。値の引き継ぎはセグウェイsegueです
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
//FirstTableViewController import UIKit class FirstTableViewController: UITableViewController { var FirstTableArray = [String]() var SecondArray = [SecondTable]() var ThirdArray = [ThirdView]() override func viewDidLoad() { super.viewDidLoad() FirstTableArray = ["F1","F2","F3"] SecondArray = [SecondTable(SecondTitle:["S11","S12","S13"]), SecondTable(SecondTitle:["S21","S22","S23"]), SecondTable(SecondTitle:["S31","S32","S33"]) ] ThirdArray = [ThirdView(ThirdViewArray:["31","32","33"]), ThirdView(ThirdViewArray:["321","322","323"]), ThirdView(ThirdViewArray:["331","332","333"])] // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return self.FirstTableArray.count } override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let Cell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell Cell.textLabel?.text = FirstTableArray[indexPath.row] return Cell } override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { var indexPath : NSIndexPath = self.tableView.indexPathForSelectedRow()! var DestViewController = segue.destinationViewController as! SecondTableViewController //var SecondTableArrayTwo : SecondTable //SecondTableArrayTwo = SecondArray[indexPath.row] //var ThirdAnswerArray : ThirdView //ThirdAnswerArray = ThirdArray[indexPath.row] DestViewController.SecondAnswerArray = ThirdArray[indexPath.row].ThirdViewArray DestViewController.SecondArray = SecondArray[indexPath.row].SecondTitle } } |
2つ目のテーブルビューです。ここから最後のテキストを渡します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
// SecondTableViewController.swift import UIKit class SecondTableViewController: UITableViewController { var SecondArray = [String]() var SecondAnswerArray = [String]() override func viewDidLoad() { super.viewDidLoad() } override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return self.SecondArray.count } override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let Cell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell Cell.textLabel?.text = SecondArray[indexPath.row] return Cell } override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { var indexPath : NSIndexPath = self.tableView.indexPathForSelectedRow()! var DestViewController = segue.destinationViewController as! ViewController DestViewController.FirstString = SecondAnswerArray[indexPath.row] } } |
最後のテキスト表示のためのビューです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// ViewController.swift import Foundation import UIKit class ViewController : UIViewController { var FirstString = String() //var ThirdArray = [ThirdView]() @IBOutlet var TextView: UITextView! override func viewDidLoad(){ super.viewDidLoad() TextView.text = FirstString } } |
テキスト配列
1 2 3 4 5 6 7 8 9 |
// SecondTable.swift // 2tableview20150527_pre // import Foundation struct SecondTable { var SecondTitle : [String] } |
テキスト配列
1 2 3 4 5 6 7 8 9 10 11 |
// // ThirdView.swift // 2tableview20150527_pre import Foundation struct ThirdView { var ThirdViewArray = [String]() } |