swift,2つのテーブルビューとテキスト表示 アイフォンアプリ

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です

//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つ目のテーブルビューです。ここから最後のテキストを渡します。

//  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]
        
    }
}

最後のテキスト表示のためのビューです。

//  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
        
    }
}

テキスト配列

//  SecondTable.swift
//  2tableview20150527_pre
//

import Foundation

struct SecondTable {
    var SecondTitle : [String]
}

テキスト配列

//
//  ThirdView.swift
//  2tableview20150527_pre


import Foundation

struct ThirdView {
    var ThirdViewArray = [String]()
    
}

こちらの記事もどうぞ