选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次,水平不够,暂时存疑吧…
备注: 这是看教程写下的笔记和疑惑