做一個TableView 的iOS App的筆記(一)

yuxue發表於2015-08-01

選single view app模板,App名字就叫XYS

如果使用iOS的模板,直接選single view app的話,那麼系統會幫忙自動生成這樣幾個檔案:

假裝這個檔案叫XYS

objectivecMain.storyboard (故事版,我的愛)
XYSAppDelegate.h/.m (代理佬)
XYSViewController.h/.m (檢視控制器,也就是controller,老大)

以及一堆其他的

現在我要把這個single view app變成table view(表示圖,怪怪的名字)
需要做的事情如下

到Main.storyboard故事版刪掉ViewController scene

因為我們不要使用預設的scene

到XYSViewController.h中去改程式碼

objectivec//  XYSViewController.h

#import <UIKit/UIKit.h>

@interface XYSViewController : UITableViewController

@end

原本這個ViewController是繼承自UIViewController,現在我們讓它直接繼承自UITableViewController

在故事版中拖拽新建一個table view controller scene,還要把他的Custom class改為XYSViewController

通過這樣兩個動作,我們就新建了表檢視的view元素,同時把它和XYSViewController聯絡起來了,不僅建立了檢視,並且把它和控制器聯絡起來了,假裝棒棒噠

這個時候執行App,我們可以看到螢幕上出現一行一行的
有點tableview的樣子了

注意的點之一:
cell是視覺呈現元素
row是資料來源
所以之後可以認真看一下函式名字

注意的點之二:
可以認真看一下TableView的巢狀元素

Table View
   Table View Cell
      Content View   

選中Table View Cell,放一個Label放在上面,再到Table View Cell將其Identifier設定為item,Accessory設定為Checkmark

我覺得可以注意的點是id是table view cell的id,Accessory是table view cel的Checkmark,都是table view cell的屬性們

這個時候仍舊沒有資料被傳入cell,所以執行依舊沒有特點

新增函式

objectivec
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 1; } -(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:@"item"]; return cell; }

當然這裡的函式寫法都很有問題,因為都是屬於hard code進去的型別,但是可以嘗試理解的點比如函式名字,numberOfRowsInSection顯示Rows的數量,然後return的是NSInteger,第二個函式返回的是(UITableViewCell*)有意思,返回的是cell。這個時候把return 1 改成 return 5,則可以看到五行同樣的東西,我感覺,5行比較容易理解,但是哼唧因為cellForRowAtIndexPath⽅法中只需要返回⼀個prototype cell的copy,所以表檢視就會顯⽰示5個相同的行,所以是自始自終都有一個cell,因為一開始我們們就只去把一個cell的id設成了item,然後所以這5行都是使用這一個cell生成的copy來展示資料,cell這個視覺元素我們來用,用了5次,水平不夠,暫時存疑吧…

備註: 這是看教程寫下的筆記和疑惑

相關文章