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

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

テーブルビュー>テーブルビュー2>テキストを表示するアイフォンアプリの作り方の解説です。

なお、テーブルを使用する場合は幾つの方法あるみたいです。
TableViewControllerの他の方法としては、カスタマイズをする場合は、
UIViewController+UITableView(またはUITableViewCell?)を使用したほうが良さそうです。
その時にデリゲートを指定する必要があったりUITableViewを紐付けする必要があります。

150529-0003

解説

前回のコード入力動画(40分)はこちら

参考動画は

(ただし、参考動画は変数名の命名規則がXCODE風ではない。)

<概要>
2つのTableViewControllerを使ってテキスト表示するアイフォンアプリ

<ポイント>
最初のテーブルビューのprepareForSegueにおいて

var destViewController = segue.destinationViewController as! secondTableViewController

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        var indexPath : NSIndexPath = self.tableView.indexPathForSelectedRow()!
        var destViewController = segue.destinationViewController as! secondTableViewController

		//secondTableViewControllerに設定されたsecondStringに渡す
        destViewController.secondString = secondString[indexPath.row].array

        destViewController.lastString = lastString[indexPath.row].array
        
    }

以下ソースコード

前回の動画は構造体を別ファイルにしていましたが今回は同じコード内に入れています。

前回のテーブルビュー記事はこちら

//
//  ViewController.swift
//  2tableview20150528_2
//
//  Created by 間世田 俊朗 on 2015/05/28.
//  Copyright (c) 2015年 maseda. All rights reserved.
//

import UIKit

struct secondStruct {
    var array : [String]
}

struct lastStruct {
    var array : [String]
}

class ViewController: UITableViewController {
    var firstString = [String]()
    var secondString = [secondStruct]()
    var lastString = [lastStruct]()
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        //最初のテーブルビューのセルの文字列
        firstString = ["1","2","3"]
        
        //2番めのテーブルビューのセルの文字列
        secondString = [secondStruct(array: ["211","212","213"]),
            secondStruct(array: ["221","222","223"]),
            secondStruct(array: ["231","232","233"])]
        
        //最後のViewのテキスト
        lastString = [lastStruct(array: ["1view1","1view2","1view3"]),
            lastStruct(array: ["2view1","2view2","2view3"]),
            lastStruct(array: ["3view1","3view2","3view3"])]
        
        // 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.firstString.count
    }
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let Cell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell
        Cell.textLabel?.text=firstString[indexPath.row]
        
        return Cell
    }
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        var indexPath : NSIndexPath = self.tableView.indexPathForSelectedRow()!
        var destViewController = segue.destinationViewController as! secondTableViewController
        destViewController.secondString = secondString[indexPath.row].array
        destViewController.lastString = lastString[indexPath.row].array
        
    }
}

//
//  secondTableViewController.swift
//  2tableview20150528_2
//
//  Created by 間世田 俊朗 on 2015/05/29.
//  Copyright (c) 2015年 maseda. All rights reserved.
//

import Foundation
import UIKit

class secondTableViewController : UITableViewController {
    //2TableView
    var secondString = [String]()
    //lastView
    var lastString = [String]()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
    }
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.secondString.count
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let Cell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell
        Cell.textLabel?.text = secondString[indexPath.row]
        return Cell
        
    }
    
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        var indexPath : NSIndexPath = self.tableView.indexPathForSelectedRow()!
        var destViewController = segue.destinationViewController as! lastViewController
        
        destViewController.lastString = lastString[indexPath.row]
        
    }
}
//
//  lastViewController.swift
//  2tableview20150528_2
//
//  Created by 間世田 俊朗 on 2015/05/29.
//  Copyright (c) 2015年 maseda. All rights reserved.
//

import Foundation
import UIKit

class lastViewController : UIViewController {
    
    @IBOutlet var textView: UITextView!
    
    var lastString = String()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        textView.text = lastString
        
    }
    
    
}

こちらの記事もどうぞ