tableview的问题小结

问题1:什么是懒加载?什么是字典转模型?模型又是什么?为什么要写懒加载?self.属性和_属性的使用注意?为什么控件要用weak? string要用copy?

懒加载也成为延迟加载,只有在需要加载的时候才去加载,其实就是重写属性的getter方法

#import "CWViewController.h"
#import "CWCarModel.h"
//设置数据源方法
@interface CWViewController ()<UITableViewDataSource>
@property (nonatomic,weak)UITableView *tableView;
@property (nonatomic,strong)NSArray *dataArray;
@end

@implementation CWViewController
//懒加载
- (NSArray *)dataArray {
    if (_dataArray == nil) {
        _dataArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"cars" ofType:@"plist"]];
        //字典转模型
        //1.创建可变数组
        NSMutableArray *nmArray = [NSMutableArray array];
        //2.遍历字典数组
        for (NSDictionary *dict in _dataArray) {
            //字典转模型
            CWCarModel *model = [CWCarModel carsWithDict:dict];
            //将模型添加到可变数组
            [nmArray addObject:model];

        }
        //将可变数组中的模型赋值给字典数组
        _dataArray = nmArray;

    }
    return _dataArray;
}
- (void)viewDidLoad {
    [super viewDidLoad];
//    self.dataArray;

    [self setUpUI];
}
- (void)setUpUI {
    UITableView *tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height) style:UITableViewStyleGrouped];
    self.tableView = tableView;
    [self.view addSubview:tableView];

#pragma mark -- 以上是做了数据处理,把要访问的数组存储到了字典数组中,下面是为了把数据显示出来
    //设置代理对象
    self.tableView.dataSource = self;

}
#pragma mark -- 实现协议方法
//返回多少组
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return self.dataArray.count;
}
//每组有多少行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    //获取模型对象
    CWCarModel *model = self.dataArray[section];
    return model.cars.count;
}
//每行显示什么内容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    //实例化控件
    UITableViewCell *cell = [[UITableViewCell alloc]init];
    //1.获取模型对象
    CWCarModel *model = self.dataArray[indexPath.section];
    //2.获取汽车名
    NSString *str = model.cars[indexPath.row];
    //3.设置文字信息
    cell.textLabel.text = str;
    return cell;
}
#pragma mark -- 返回头尾组标题
//组头
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    CWCarModel *model = self.dataArray[section];
    return model.title;
}
//组尾
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section {
    CWCarModel *model = self.dataArray[section];
    return model.desc;
}
@end
时间: 2024-10-07 11:53:27

tableview的问题小结的相关文章

tableview小结-初学者的问题

初学者的问题主要集中在,下面几个问题: 一.几个函数总是不被调用:例如: [objc] view plaincopy - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section; 这个代理不被调用的种类很多: 1. section的count没有正确 2. 没有设置代理 3.如果没有设置seciton的高度,仍然不会被调用. 二,如何在tableview右侧显示索引(拼音条) 代

tableview小结

初学者的问题主要集中在,下面几个问题: 一.几个函数总是不被调用:例如: - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section; 这个代理不被调用的种类很多: 1. section的count没有正确 2. 没有设置代理 3.如果没有设置seciton的高度,仍然不会被调用. 二,如何在tableview右侧显示索引(拼音条) 代码很简单: -(NSArray *)sect

iOS开发UI篇—UITableview控件使用小结

iOS开发UI篇—UITableview控件使用小结 一.UITableview的使用步骤 UITableview的使用就只有简单的三个步骤: 1.告诉一共有多少组数据 方法:- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView; 2.告诉每组一共有多少行 方法:- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSIntege

iOS开发系列之一 - UIButton 用法小结

// 初始化按钮并设置类型 UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; // 能够定义的UIButton类型有以下6种: // typedef enum { // UIButtonTypeCustom = 0, 自定义风格 // UIButtonTypeRoundedRect, 圆角矩形 // UIButtonTypeDetailDisclosure, 蓝色小箭头按钮,主要做详细说明用 // UIButto

UI学习阶段性小结

#pragma mark  UI阶段性小结 //    UI(User Interface)用户界面 //    iOS App = 各种各样的UI控件 + 业务逻辑和算法 #pragma mark  一.UIView.UILabel.UIWindow #pragma mark  1.frame是一个结构体,包含2个部分的内容:origin(x和y)和Size(width和height) #pragma mark  2.bounds(边界)是view的重要属性 //    用于定义自己的边界,同

使用Apache POI导出Excel小结--导出XLS格式文档

使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI导出Excel小结--导出XLSX格式文档 使用Apache POI导出Excel--大数量导出 导出XLS格式文档 做企业应用项目难免会有数据导出到Excel的需求,最近在使用其,并对导出Excel封装成工具类开放出来供大家参考.关于Apache POI Excel基本的概念与操作我在这里就不啰嗦

TableView的accessoryButtonTappedForRow方法执行的时机

敲代码时遇到了这个问题,别偷懒,写下来备查. 当你在IB中对TableView中的accessory(注意,我说的是cell中的accessory,而不是cell)创建segue时,如果你在VC中同时实现以下3个方法,请问调用的次序是神马!? //1 func tableView(_ tableView: UITableView, accessoryButtonTappedForRowWith indexPath: IndexPath) //2 override func shouldPerfo

【转载】小结一下linux 2.6内核的四种IO调度算法

在LINUX 2.6中,有四种关于IO的调度算法,下面综合小结一下: 1) NOOP NOOP算法的全写为No Operation.该算法实现了最最简单的FIFO队列,所有IO请求大致按照先来后到的顺序进行操作.之所以说“大致”,原因是NOOP在FIFO的基础上还做了相邻IO请求的合并,并不是完完全全按照先进先出的规则满足IO请求.NOOP假定I/O请求由驱动程序或者设备做了优化或者重排了顺序(就像一个智能控制器完成的工作那样).在有些SAN环境下,这个选择可能是最好选择.Noop 对于 IO

IOS TableView详解

一.建立 UITableView DataTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 420)]; [DataTable setDelegate:self]; [DataTable setDataSource:self]; [self.view addSubview:DataTable]; [DataTable release]; 二.UITableView各Method说明 //Section总数 - (NS