选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次,水平不够,暂时存疑吧...

备注: 这是看教程写下的笔记和疑惑


yuxue
47 声望2 粉丝

人家是妹子哟~✨