昨天搞了半天,還是沒辦法把 table view 中各個cell的值,另外傳出來...Sad~~
明天把問題整理整理,再拿出來檢討檢討。為了鐵人賽,今天先實做一個展示控制器 (Split View Controller),從英文字面上來看就是把畫面分開來,我們常看到左側是選單,右側則是展示畫面,這個效果就是展示控制器。
預設的 Split View Controller會自帶一個 Navigation Controller 與 View Controller
在 sotryboard 上點選 Master View Controller 接著在右方 Attributes 屬性頁面中選擇 Is Initial View Controller (也可以移動一開始預設的 View Controller左側的箭頭)
接著刪除與 Split View Controller 連結的 View Controller
從 Master View Controller 右鍵拖曳藍線到 View Controller,並點選 detail view controller 的 Segue。
類別名稱我們使用預設的TableViewController,接著將 sotryboard 上的 Table View Controller 的對應類別選擇這個TableViewControlle
這邊細節不贅述,設定一個section有3個cell,cell內的文字分別為 "test1", "test2", "test3"
var list = ["test1", "test2", "test3"]
override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return list.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = list[indexPath.row]
return cell
}
Segue 模式選擇 Show Detail
接著把 Label 加入 ViewController.swift 的 IBOulet,命名為 aLabel。
另外宣告一個變數名為 string,用來接收 TableView 傳過來的字串。
@IBOutlet weak var aLabel: UILabel!
var string: String? = nil
在viewDidLoad()中,讓 Label 顯示 string 的字
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
aLabel.text = string
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
let cell = tableView.cellForRow(at: tableView.indexPathForSelectedRow!)
let vc = segue.destination as! ViewController
vc.string = cell?.textLabel?.text
}
將iphone Plus橫向