Swift で TableView を使う方法します。
まず、Swiftで別の画面に情報を渡しながら移動する (プログラムで)方法を理解して下さい。 これが理解できたら、後は TableView で

project navigator のプロジェクト名の上でマウスを右ドラッグして "New File..." を選択します。 iOS の Source で Cocoa Touch Class を選んで Next をクリックします。 Class: には "ViewController2", Subclass of: には "UIViewController" Language: には "Swift" を選びます(クラス名は自由に選んで構いません)。 ViewController2.swift がプロジェクトに追加されます。







| 種類 | connection | 変数名またはメソッド名 |
| Label | Outlet | myLabel |
| "Back" Button | Action (Touch Up Inside) | tapBack()関数 |









下の例では説明を簡単にするために、テーブルビューの項目数を32個で固定
return 32
とし、
項目に表示する文字列は行番号、
cell.textLabel?.text = String(indexPath.row)
で、項目を選択したときに遷移するViewControllerに渡す情報も行番号
controller.id = indexPath.row
としています。
これらは必要に応じて自分で変更して下さい。
[注意] この例では項目の個数や内容が変更されることはありませんが、 もしもデータの個数や内容が変更される時は TableView の表示を変更するために myTableView.reloadData() メソッドを呼び出す必要があります。
| ViewController.swiftに追加するコード(赤字部分) |
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var myTableView: UITableView!
func tableView(tableView: UITableView, numberOfRowsInSection section:Int) -> Int {
return 32
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "Cell")
cell.textLabel?.text = String(indexPath.row)
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let storyboard = UIStoryboard(name:"Main",bundle:nil)
let controller: ViewController2 = storyboard.instantiateViewControllerWithIdentifier("ViewController2") as! ViewController2
controller.id = indexPath.row
self.presentViewController(controller, animated: true, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
myTableView.delegate = self
myTableView.dataSource = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
|
| ViewController2.swiftに追加するコード(赤字部分) |
import UIKit
class ViewController2: UIViewController {
var id: Int! // this value should be set from outer
@IBOutlet weak var myLabel: UILabel!
@IBAction func tapBack(sender: AnyObject) {
dismissViewControllerAnimated(true, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
if id != nil {
myLabel.text = String(id)
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
|
| --> |
| --> |
| --> |
|
| 最初の画面(ViewController) | スクロールして | 12を選択(ViewController2) | Backボタンで戻る |