選single view app模板,App名字就叫XYS
如果使用iOS的模板,直接選single view app的話,那麼系統會幫忙自動生成這樣幾個檔案:
假裝這個檔案叫XYS
objectivec
Main.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次,水平不夠,暫時存疑吧…
備註: 這是看教程寫下的筆記和疑惑