記得要在main.stroyboard那邊把tableview的delegate 和 Datasource拉到view裡面
class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {
let fruitArray = ["apple","banna","mango","watermelon"]
override func viewDidLoad() {
super.viewDidLoad()
// 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.
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return fruitArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.text = fruitArray[indexPath.row]
return cell
}
}
----------------------------------------------------
使用了 UITableViewDelegate 和 UITableViewDataSource
要去實作 這三個 func...
// 有幾個section
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
// 有幾個 row
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return fruitArray.count
}
// 每一個tableviewcell 的實體...
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.text = fruitArray[indexPath.row]
return cell
}
indexPath.row 和 indexPath.section 可以拿來定位
------------------------------------------------
考慮記憶體的回收的問題
現在mainstory, 點選TableView, 新增一個 Prototype Cells
然後點到 table view 下面的 cell , 把他的IdentifyId 改成 你要的名字. 這裡是叫 "Cell"
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
//let cell = UITableViewCell()
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath )
cell.textLabel?.text = fruitArray[indexPath.row]
return cell
}
table view 的style -> "group", 會有系統預設的分隔線
section header文字的設定方法
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
if section == 0 {
return "FRUIT"
}else{
return "COLOR"
}
}
--------------------------------------------
影藏 狀態列
--------------------------------------------
影藏 狀態列
override var prefersStatusBarHidden: Bool{
return true
}
或是把整個table view 往下移
override func viewDidLoad() {
super.viewDidLoad()
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem()
self.tableView.contentInset = UIEdgeInsets(top: 20, left: 0, bottom: 0, right: 0)
}
第三種方法就是在 tableviewcontroller 裡面 embed in 一個 navigator controller
他就會出現一個 status bar..
-------------------------------------------
秀出tableView 的 image
cell.imageView?.image = UIImage(named: animalArray[indexPath.row])
-----------------------------------------
實作當按下項目後.. 會跳到其他的viewcontroller
在 上方的那個黃色小圓點... 點按滑鼠右鍵.. 拖拉到你想要跳的的view-controller
, 然後就會出去這個segue.. 然後點選這個segue... 填入 identifier , 這邊我填入 "showDetail"
然後實作這個function
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "showDetail", sender: nil)
}
利用 performSegue(withIdentifier: "showDetail", sender: nil)
在 withIdentifier 的欄位指定你要的 segue
沒有留言:
張貼留言