UITableView底子
dateSource:数据代理对象
delegate:平常代理对象
numberOfSectionInTableView:得到组数协议
numberOfRowsInSection:得到行数协议
cellForRowAtIndexPath:创建单元格协议
UIViewController.h:
- #import <UIKit/UIKit.h>
- @interface ViewController : UIViewController
- <
- //实现数据视图的普通协议
- //数据视图的普通事件处理
- UITableViewDelegate,
- //实现数据视图的数据代理协议
- //处理数据视图的数据代理
- UITableViewDataSource
- >
- {
- //定义一个数据视图对象
- //数据视图用来显示大量相同的格式的大量信息的视图
- UITableView* _tableView;
- }
- @end
复制代码 ViewController.m:
- #import "ViewController.h"
- @interface ViewController ()
- @end
- @implementation ViewController
- - (void)viewDidLoad {
- [super viewDidLoad];
-
- //创建数据视图
- //P1:数据视图的位置
- //P2:数据视图的风格
- //UITableViewStylePlain:普通风格
- //UITableViewStyleGrouped:分组风格
- _tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
- //设置数据视图的代理对象
- _tableView.delegate = self;
- //设置数据视图的数据源对象
- _tableView.dataSource = self;
-
- [self.view addSubview: _tableView];
-
- }
- //获取每组元素的个数(行数)
- //程序在显示数据视图时会调用此函数
- //返回值:表示每组元素的个数
- //P1:数据视图对象本身 P2:那一组需要的行数
- -(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- {
- return 5;
- }
- //设置数据视图的组数
- -(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
- {
- return 3;
- }
- //创建单元格对象函数,传入两个参数
- //P1:传入这个函数的对象 P2:单元格的索引
- -(UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- NSString* cellStr = @"cell";
-
- UITableViewCell* cell = [_tableView dequeueReusableCellWithIdentifier:cellStr];
- if(cell == nil) {
- //创建一个单元格对象,传入两个参数
- //P1:单元格的样式 P2:单元格的副用标记
- cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellStr];
-
- }
- //indexPath.section表示组数
- //indexPath.row表示行数
- NSString* str = [NSString stringWithFormat:@"第%ld组,第%ld行!", indexPath.section, indexPath.row];
- //将单元格的主文字内容赋值
- cell.textLabel.text = str;
- return cell;
- }
- @end
复制代码 UITableView协议
heightForRowAtIndexPath:获取单元格高度协议
heightForHeaderInSection:数据视图头部高度协议
heightForFooterInSection:数据视图尾部高度协议
titleForFooterINSection:数据视图尾部的标题协议
titleForHeaderInSection:数据视图头部标题协议
UIViewController.h:
- #import <UIKit/UIKit.h>
- @interface ViewController : UIViewController
- <UITableViewDataSource,UITableViewDelegate>
- {
- //定义数据视图对象
- UITableView* _tableview;
- //声明一个数据源
- NSMutableArray* _arrayData;
- }
- @end
复制代码 UIViewController.m:
- #import "ViewController.h"
- @interface ViewController ()
- @end
- @implementation ViewController
- - (void)viewDidLoad {
- [super viewDidLoad];
-
- _tableview = [[UITableView alloc] initWithFrame:CGRectMake(0, 20, 480, 832) style:UITableViewStyleGrouped];
- //设置代理对象
- _tableview.delegate = self;
- //设置数据视图代理对象
- _tableview.dataSource = self;
-
- [self.view addSubview:_tableview];
- //创建一个可变数组
- _arrayData = [[NSMutableArray alloc] init];
-
- for(int i = 'A'; i <= 'Z'; i++) {
- NSMutableArray* arraySmall = [[NSMutableArray alloc] init];
-
- for(int j = 1; j<=5; j++) {
- NSString* str = [NSString stringWithFormat:@"%c%d", i, j];
-
- [arraySmall addObject:str];
- }
- //创建一个二维数组
- [_arrayData addObject: arraySmall];
- }
- }
- //获取组数
- -(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
- {
- return _arrayData.count;
- }
- //获取每组的元素个数
- -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- {
- NSInteger numRow = [[_arrayData objectAtIndex:section]count];
- return numRow;
- }
- //获取单元格
- -(UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- NSString *str = @"cell";
-
- UITableViewCell *cell = [_tableview dequeueReusableCellWithIdentifier: str];
- if (cell == nil) {
- cell = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier: str];
- }
- cell.textLabel.text = _arrayData[indexPath.section][indexPath.row];
- return cell;
- }
- //获取高度
- -(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- return 100;
- }
- //获取每组头部标题
- -(NSString*) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
- {
- return @"头部标题";
-
- }
- //获取每组尾部标题
- -(NSString*) tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
- {
- return @"尾部标题";
- }
- -(CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
- {
- return 40;
- }
- -(CGFloat) tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
- {
- return 20;
- }
- @end
复制代码 效果图:
UITableView高级协议和单元格
高级协议的几个函数:
commitEditingStyle:提交编辑函数
canEditRowAtIndexPath:开启关闭编辑单元格
editingStyleForRowAtIndexPath:编辑单元格风格设定
didSelectRowAtIndexPath:选中单元格响应协议
didDeselectRowAtIndexPath:反选单元格响应协议
单元格几个函数:
dequeueReusableCellWithIdentifier:获取可以复用的单元格对象
initWithStyle:根据风格创建单元格对象
reuseldentifier:设置可以复用单元格的ID
设置一个导航控制器:
- #import "SceneDelegate.h"
- #import "ViewController.h"
- @interface SceneDelegate ()
- @end
- @implementation SceneDelegate
- - (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
-
- self.window.frame = [UIScreen mainScreen].bounds;
-
- UINavigationController* nav = [[UINavigationController alloc] initWithRootViewController:[[ViewController alloc] init]];
-
- self.window.rootViewController = nav;
- }
- - (void)sceneDidDisconnect:(UIScene *)scene {
- // Called as the scene is being released by the system.
- // This occurs shortly after the scene enters the background, or when its session is discarded.
- // Release any resources associated with this scene that can be re-created the next time the scene connects.
- // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
- }
- - (void)sceneDidBecomeActive:(UIScene *)scene {
- // Called when the scene has moved from an inactive state to an active state.
- // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
- }
- - (void)sceneWillResignActive:(UIScene *)scene {
- // Called when the scene will move from an active state to an inactive state.
- // This may occur due to temporary interruptions (ex. an incoming phone call).
- }
- - (void)sceneWillEnterForeground:(UIScene *)scene {
- // Called as the scene transitions from the background to the foreground.
- // Use this method to undo the changes made on entering the background.
- }
- - (void)sceneDidEnterBackground:(UIScene *)scene {
- // Called as the scene transitions from the foreground to the background.
- // Use this method to save data, release shared resources, and store enough scene-specific state information
- // to restore the scene back to its current state.
- }
- @end
复制代码 ViewController.h:
- #import <UIKit/UIKit.h>
- @interface ViewController : UIViewController<UITableViewDelegate,UITableViewDataSource>
- {
- //数据视图
- UITableView* _tableview;
- //数据源
- NSMutableArray* _arrayData;
-
- UIBarButtonItem* _btnEdit;
- UIBarButtonItem* _btnFinish;
- UIBarButtonItem* _btnDelete;
-
- BOOL _isEdit;
- }
- @end
复制代码 ViewController.m:
效果图:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |