Table データ表示をPlist -> NSArray -> NSDictionary
経由で表示しテーブルからセレクトしたPlist「Name」のみを遷移先に転送している。
Item3.plist
_items配列にて使用しテーブル表示する。
Storyboardについては、ViewControlerを削除しNavigation Controlierを選択して使用
注意※ 画面サイズはこのままサイズ(デフォルトサイズ表示)を使用すること。4.7インチ等に変えると画面遷移した時に遷移先のラベルが表示しない。
セルの設定
Style:Subtitle
Identifler:Cell
テーブルリストから遷移先の「DetailViewController」に紐付けする場合「Storyboard
Segue」のIdentifler:「Segue01」と記述しておく。
import UIKit
class TableViewController: UITableViewController {
var _items:NSArray = []
override func viewDidLoad() {
super.viewDidLoad()
// リソースにあるplistファイルを読み込む
let bnd:NSBundle = NSBundle.mainBundle()
let prs:NSString = bnd.pathForResource("Items3",ofType:"plist")!
// Plist -> NSArray
_items = NSArray(contentsOfFile:prs as String)!
}
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 {
let cell = tableView.dequeueReusableCellWithIdentifier
("Cell", forIndexPath: indexPath) as! UITableViewCell
// 表示データの設定 NSArray -> NSDictionary
var dic:NSDictionary = _items.objectAtIndex(indexPath.row) as! NSDictionary
//println(" Plist:\(dic)")
var str01:NSString = dic["Name"]! as! NSString
var str02:NSString = dic["Note"]! as! NSString
cell.textLabel!.text = str01 as String
cell.detailTextLabel!.text = str02 as String
return cell
}
// MARK: - Navigation
// 画面遷移時に値を遷移先に渡す
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// セグエ判定
if (segue.identifier == "Segue01"){
// セルの行情報の取得
var indexPath:NSIndexPath = self.tableView.indexPathForSelectedRow()!
// 表示データの設定 NSArray -> NSDictionary
var dic:NSDictionary = _items.objectAtIndex(indexPath.row) as! NSDictionary
// Plist "Name"情報
var str:NSString = dic["Name"]! as! NSString
// DetailViewControllerクラスをインスタンス化してsegue(画面遷移)
で値を渡せるようにバンドルする
let vc : DetailViewController = segue.destinationViewController
as! DetailViewController
// "Name"を転送
vc.mssage = str;
//println(" \(vc.mssage)")
}
}
}
import UIKit
class DetailViewController: UIViewController {
@IBOutlet weak var lbMessage: UILabel!
// 遷移時の受け取り用の変数
var mssage:NSString = ""
override func viewDidLoad() {
super.viewDidLoad()
// タイトルの表示
self.lbMessage!.text = mssage as String
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation
before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
}
GitHub TableDetailSwift02
▫️参考ページ
コメントをお書きください