Item3.plist
_items配列にて使用しテーブル表示する。
Storyboardについては、ViewControlerを削除しNavigation Controlierを選択して使用
注意※ 画面サイズはこのままサイズ(デフォルトサイズ表示)を使用すること。4.7インチ等に変えると画面遷移した時に遷移先のラベルが表示しない。
セルの設定
Style:Subtitle
Identifler:Cell
テーブルリストから遷移先の「DetailViewController」に紐付けする場合「Storyboard
Segue」のIdentifler:「Segue01」と記述しておく。
import UIKit
class TableViewController: UITableViewController {
// Plist用の配列
var _items:NSArray = []
override func viewDidLoad() {
super.viewDidLoad()
// Plistファイルパス
let path = NSBundle.mainBundle().pathForResource("Items3", ofType:"plist")
_items = NSArray(contentsOfFile:path!)!
//println(_items);
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
// 設定(列)
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Potentially incomplete method implementation.
// Return the number of sections.
return 1
}
// 設定(行数)
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int)
-> Int {
// #warning Incomplete method implementation.
// Return the number of rows in the section.
return _items.count
}
// 設定(セル)
override func tableView(tableView: UITableView, cellForRowAtIndexPath
indexPath: NSIndexPath) -> UITableViewCell {
// Get a Cell
let cell = tableView.dequeueReusableCellWithIdentifier
("Cell", forIndexPath: indexPath) as! UITableViewCell
let dic = _items.objectAtIndex(indexPath.row) as! NSDictionary
cell.textLabel!.text = dic.valueForKey("Name") as? String
cell.detailTextLabel!.text = dic.valueForKey("Note") as? String
return cell
}
// 画面遷移時に値を遷移先に渡す
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// セグエ判定
if (segue.identifier == "Segue01"){
// セルの情報の取得
var indexPath:NSIndexPath = self.tableView.indexPathForSelectedRow()!
// row 行数の抜き出し
var row:NSInteger = indexPath.row
// DetailViewControllerクラスをインスタンス化して
segue(画面遷移)で値を渡せるようにバンドルする
let detailView : DetailViewController =
segue.destinationViewController as! DetailViewController
// detailView(バンドルされた変数)に受け取り用の変数を引数としrowを渡す
(rowには渡したい値)
// この時DetailViewControllerにて受け取る同型の変数を用意しておかないとエラーになる
detailView.row = row as Int
//println(" \(detailView.row)")
}
}
}
import UIKit
class DetailViewController: UIViewController {
// Plist用の配列
var _items:NSArray = []
/// 遷移時の受け取り用の変数
var row:Int = 0
@IBOutlet weak var lbMessage: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Plistファイルパス
let path = NSBundle.mainBundle().pathForResource("Items3", ofType:"plist")
_items = NSArray(contentsOfFile:path!)!
//println(" \(row)")
// タイトルの表示
self.lbMessage!.text = _items.objectAtIndex(row).valueForKey("Name") as? String
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Plist
valueForKeyの記述を2行から1行にまとめた例。
2行記述
let dic = _items.objectAtIndex(row) as! NSDictionary
// タイトルの表示
self.lbMessage!.text = dic.valueForKey("Name") as? String
1行記述
// タイトルの表示
self.lbMessage!.text = _items.objectAtIndex(row).valueForKey("Name") as? String
GitHub TableDetailSwift03
▫️参考ページ
コメントをお書きください
たまご (水曜日, 02 9月 2015 15:19)
UIパーツの結びつけの解説もお願いできませんか?
luke (水曜日, 02 9月 2015 15:24)
済みません少し時間をください。