UIKit框架-高级控件:10.UITableView的简单简介

在前面, 我们把UIPickerView基本上已经是演练完了, 剩下的就是靠大家去熟练的掌握了, 现在让我们来看看另外一个高级控件, 也是我们经常会使用到的UI控件, UITableView, 在写代码之前, 我们首先来看看UITableView的一些须知信息:


1.UITableView需要一个dataSource(数据源)来显示数据, UITableView会向dataSource查询一共又多少行数据以及每一行显示什么数据等等. 没有设置dataSourceUITableView只是一个空空当当的View

PS:凡事遵守UITableViewDataSource协议的OC对象, 都可以是UITableView的数据源, 这是毋庸置疑的.


2.通常都要为UITableView设置代理Delegate(代理对象), 以便在UITableView触发事件时做出相应的处理, 比如选中了某一行, 需要做什么, 显示什么等等.

PS:凡事遵守了UITableViewDelegate协议的OC对象, 都可以是UITableView的代理对象.



一般情况下, 会让Controller从当UITableViewdataSourceDlegate.



现在让我们一起来看看到底什么是UITableView.


1.在.h文件中遵守UITableViewDataSource协议

@interface ViewController : UIViewController <UITableViewDataSource>
@end



2.在.m文件中声明全局变量

@interface ViewController ()

@property (strong, nonatomic) NSArray *writer1;
@property (strong, nonatomic) NSArray *writer2;

@end

PS: 之前我说过在.m文件中也是可以定义属性的.


3.添加UITableView

- (void)myTableView
{
    // 这个style分别有两种, 一种是分组模式, 一种是平面模式
    // Plain模式是平面模式
    // Grouped是分组模式
    UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 28, self.view.frame.size.width, self.view.frame.size.height) style:UITableViewStyleGrouped];
    
    [tableView setDataSource:self];
    
    [self.view addSubview:tableView];
}


4.初始化数据

- (void)myArray
{
    self.writer1 = @[@"完美世界", @"遮天", @"神墓"];
    self.writer2 = @[@"天火大道", @"绝世唐门", @"神印王座", @"琴帝"];
}



5.实现UITableViewDataSource的方法

#pragma mark 分组 Sections表示表格的组数
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 2;
}
#pragma mark 每个分组中显示的数据量
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (section == 0)
    {
        return self.writer1.count;
    } else {
        return self.writer2.count;
    }
}
#pragma mark 每个分组中显示的数据内容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *tableViewCell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
    
    NSString *citysName = nil;
    
    if (indexPath.section == 0) {
        citysName = _writer1[indexPath.row];
    } else {
        citysName = _writer2[indexPath.row];
    }
    
    [tableViewCell.textLabel setText:citysName];
    return tableViewCell;
}



6.添加UITableView的标题和页尾描述方法

#pragma mark 分组的标题
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    return section == 0 ? @"辰东" : @"唐家三少";
}

#pragma mark 分组描述
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
    if (section == 0) {
        return @"辰东小说作品集";
    } else {
        return @"唐家三少小说作品集";
    }
}



7.在viewDidLoad中实现所有方法以及初始

- (void)viewDidLoad {
    [super viewDidLoad];
    [self myArray];
    [self myTableView];
}

UITableViewStyleGrouped最终的效果:




UITableViewStylePlain最终的效果:



好了, 这次我们就讲到这里, 下次我们继续~~~

原文地址:https://www.cnblogs.com/iOSCain/p/4333138.html