UITableView 总结

//继承于UITableViewController的视图控制器 上面有一个自带的视图UITableView 表格视图的显示位置及大小都是默认的 此处无需再定义表格视图

 

//设置表格的分区个数

 

//如果表格视图有一个分区 那么该方法的返回值就为1 或者直接将该方法注释 系统默认表格就是一个分区

 

//【注意】该方法是可选择实现的方法

 

//如果方法返回值为0 就会造成程序崩溃

 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

 

 

// 下面的方法是必须要实现的方法

 

//<1>返回每个分区中的行数

//如果表格只有一个分区 那么就直接返回数据源的元素个数

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

 

//<2>设置的是每一个单元格(行)显示的内容(文字信息、图片信息、控件信息、挂件信息.....

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

 //表格视图上的单元格采用的是可重用机制

    

    //也就是表格视图创建出来以后 编译器会为表格创建一个屏幕多1个单元格 多出的单元格会在内存中等候 直到屏幕上有一个单元格划出屏幕 那么多出的那个单元格就会去屏幕的最上面或者最下面补位 划出的那个单元格就会在内存中继续等候 等候下一次复用

    

    //划出屏幕多少个单元格就有多少个单元格可复用

 

//<1>可重用的单元格都会使用一个静态局部字符串作为标识

    static NSString * str = @"identifier";

//该静态局部变量的名称任意 内容也任意

 

//<2>先去队列中查找是否存在用上面定义的字符串标识的可重用单元格

    //单元格的类名 UITableViewCell

    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:str];

/<3>判断这样的单元格是否存在

    if(cell == nil)//--------重点(表示单元格的重用)

    {

        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:str];

        //创建出可重用的单元格 使用str标识一下

    }

 //<4>为单元格添加内容

    //indexPath 是当前屏幕上显示的表格区域

    //我们可以通过indexPath获取显示在屏幕上的分区的区号、分区中的行号

    //区号和行号的下标值都是从0开始

    //所以经常使用行号获取数组中下标对应的内容

    //行号的获取indexPath.row

cell.textLabel.text = [dataSource objectAtIndex:indexPath.row];

 

 

=======================自定义表格=========================================

 

    //<1>创建表格对象

    /*

     UITableViewStylePlain,    

     UITableViewStyleGrouped

     */

    //以上两个值只是设置表格的显示样式,与有无分组无关

   UITableView *table = [[UITableView alloc]initWithFrame:CGRectMake(0, 64, 320, 480 - 64) style:UITableViewStylePlain]

 

//<2>设置代理(如果不设置代理 协议中的方法调用不到)

    table.delegate = self;

    table.dataSource = self;

 

//<3>表格视图是滚动视图的子类

    self.automaticallyAdjustsScrollViewInsets = NO;

 

//<4>初始化数据源

    dataSource = [[NSMutableArray alloc]init];

 

//设置分区的头标题

//可选择实现的方法

//【注意】plain样式的表格视图 如果不设置分区的头标题 那么分区样式显示不出来

 

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

 

//设置脚标题

-(NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section

 

//设置行高 ---- 单元格的高度默认为44像素

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

 

//【注意】group样式的表格 不设置分区的头标题 分区样式也显示的很明显 组的模式

 

 

==============表格视图的美化====================

在创建单元格方法内

//为单元格添加图片 图片的显示位置在单元格的左侧

 cell.imageView.image = [imageArr objectAtIndex:indexPath.row];

 

  //为单元格添加挂件

    /*

     UITableViewCellAccessoryNone,                   // don't show any accessory view

     UITableViewCellAccessoryDisclosureIndicator,    // regular chevron. doesn't track

     UITableViewCellAccessoryDetailDisclosureButton, // info button w/ chevron. tracks

     UITableViewCellAccessoryCheckmark,              // checkmark. doesn't track

     UITableViewCellAccessoryDetailButton

     */

    

//    cell.accessoryType = UITableViewCellAccessoryCheckmark;

//    cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;

    

 

 // 为单元格添加控件信息 (使用我们学习过的任何一种控件作作为当前单元格的挂件)

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

    btn.frame = CGRectMake(0, 0, 100, 30); // 按钮的显示位置是无效值

    [btn addTarget:self action:@selector(pressBtn:) forControlEvents:UIControlEventTouchUpInside];

    btn.tag = indexPath.row + 1; // 将自定义的挂件与cell进行关联

    

    [btn setTitle:@"跳转" forState:UIControlStateNormal];

    btn.backgroundColor = [UIColor redColor];

    

    cell.accessoryView = btn;

 

    // 设置单元格点击后的背景颜色

    /*

     UITableViewCellSelectionStyleNone,

     UITableViewCellSelectionStyleBlue,

     UITableViewCellSelectionStyleGray,

     UITableViewCellSelectionStyleDefault

     */

    cell.selectionStyle = UITableViewCellSelectionStyleGray;

 

 

// 单元格的点击事件

// 可选择的

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

 

 

===============表格的编辑======================

 

//在导航条上添加编辑按钮

self.navigationItem.rightBarButtonItem = self.editButtonItem;

 

//<1>开启表格视图的编辑模式(编辑按钮无论是Edit还是Done都会调用该方法)

-(void)setEditing:(BOOL)editing animated:(BOOL)animated

{

//1、调用父类中的编辑方法

    [super setEditing:editing animated:YES];

 

    //2、改变表格的编辑状态

    isEditing = !isEditing;

   //3、设置表格的编辑样式

    [table setEditing:isEditing animated:YES];

 

}

 

 

//<2>设置单元格的编辑类型

-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath

{

    if(indexPath.section == 0)

    {

        return UITableViewCellEditingStyleDelete;

    }

    else

    {

        return UITableViewCellEditingStyleInsert;

    }

}

 

//<3>单元格的编辑方法

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

{

    //1、删除 先删除数组中的元素 在表格视图中的单元格

    //2、添加 先向数组中添加元素 再在表格视图中插入单元格

    if(editingStyle == UITableViewCellEditingStyleDelete)

    {

        NSMutableArray * deleteArr = [dataSource objectAtIndex:indexPath.section];

        [deleteArr removeObjectAtIndex:indexPath.row];

        

        //1、删除的单元格所在的区域的数组

        //2、自带的动画效果

        [table deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];

    }

    else

    {

        NSMutableArray * insertArr = [dataSource objectAtIndex:indexPath.section];

        [insertArr insertObject:@"我是新来的" atIndex:indexPath.row];

        

        [table insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];

    }

    

}

 

 

//<4>开启所有单元格的移动状态

-(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath

{

    return YES;

}

//<5>实现移动方法

-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath

{

    //<1>sourceIndexPath将要移动的单元格所在的区域

    //<2>destinationIndexPath 单元格移动到哪个区域

    //实现方法:将移动的元素从它所在的数组中删除 然后再插入到移动到的数组中

    NSMutableArray * deleteArr = [dataSource objectAtIndex:sourceIndexPath.section];

    NSString * deleteStr = [deleteArr objectAtIndex:sourceIndexPath.row];

    [deleteArr removeObject:deleteStr];

    

    

    NSMutableArray * insertArr = [dataSource objectAtIndex:destinationIndexPath.section];

    [insertArr insertObject:deleteStr atIndex:destinationIndexPath.row];

}

 

 

UITableView取消选中颜色、常用操作

http://www.cnblogs.com/zcw-ios/articles/2574372.html

 

 

转载于:https://www.cnblogs.com/xzguo/p/4753417.html

内容概要:本文档《Docker 新手入门指南》详细介绍Docker这一开源容器化平台,旨在帮助新手理解并掌握Docker的核心概念和基本操作。文中首先解释了Docker的概念及其相对于传统虚拟机的优势,如更快的启动速度、更低的资源占用和更好的隔离性。接着,文档提供了详细的安装步骤,包括不同操作系统下的安装方法以及针对国内用户的镜像加速配置。随后,文章深入讲解了镜像管理和容器操作的基础命令,如拉取镜像、运行容器等。进一步地,文档介绍了使用Dockerfile构建自定义镜像、实现数据持久化、进行端口映射以及利用Docker Compose管理多容器应用等高级技巧。最后,给出了一些学习建议和注意事项,鼓励读者动手实验并关注安全性。 适合人群:适合对容器技术感兴趣的初学者,尤其是有一定Linux基础或打算深入了解Docker的开发人员。 使用场景及目标:①帮助读者快速上手Docker,掌握从安装到实际操作的一系列技能;②通过实例演示,如构建Python Web服务、部署WordPress和搭建Jenkins环境,让读者能够将所学应用于实际项目中;③强调容器化的优势,如提高部署效率、解决环境差异问题。 阅读建议:建议读者跟随文档逐步操作,亲身体验每个步骤,同时参考官方文档和社区资源,不断实践以巩固所学知识。特别注意安全性和资源管理方面的提示,确保容器环境的安全稳定运行。
据QYResearch调研团队最新报告“全球斗式提升机链条市场报告2024-2030”显示,预计2030年全球斗式提升机链条市场规模将达到1亿美元,未来几年年复合增长率CAGR为4.4%。 市场驱动因素: 散装物料输送行业的增长:水泥、采矿、农业和发电等行业的需求不断增长,推动了斗式提升机在垂直物料运输中的应用。基础设施建设和工业化:全球建筑活动的不断增长和工业厂房的扩张推动了对重型输送系统的需求。链式系统的效率和耐用性:链式斗式提升机因其强度高、使用寿命长而成为重型和高温应用的首选。自动化和工厂优化:采用自动化和智能控制系统可提高链式输送机的性能和运行效率。 市场制约因素: 初始安装和维护成本高:与基于皮带的替代方案相比,链式系统更昂贵且更复杂,尤其对于小型作业而言。恶劣环境下的磨损:如果不进行适当的维护,持续暴露于磨蚀性或腐蚀性材料中会导致更快的老化。某些设施的空间限制:斗式提升机的垂直设计和占地面积可能并不适合所有场地布局,从而限制了其适用性。 市场机遇: 链条材料的技术进步:耐磨耐腐蚀合金和涂层的开发延长了产品的使用寿命和可靠性。农业和食品加工行业的扩张:新兴市场对谷物处理、化肥运输和散装食品转运的需求不断增长,推动了链条的使用。现有系统的改造和升级:有机会用高性能链条系统替换过时的机械部件,以提高产量。对节能输送解决方案的需求不断增长:对降低能耗的重视推动了链传动系统和铲斗设计的创新。 根据QYResearch头部企业研究中心调研,全球范围内斗式提升机链条生产商主要包括Tsubakimoto Chain、Renold、Thiele、Pewag、RUD Ketten、HEKO Group、John King Chains、B.V.Transmission Industries、Transmin、华通气动等。2024年,全球前五大厂商占有大约51.0%的市场份额。 就
内容概要:本文由麦肯锡发布,探讨了人工智能(AI)特别是生成式AI(gen AI)如何重塑组织架构及创造价值。研究表明,企业正在通过重新设计工作流程、提升治理水平和应对更多与gen AI相关的风险来捕捉AI的价值。CEO对AI治理的监督与工作流的重新设计是取得财务影响的关键因素。大公司正引领这一变革,它们更积极地招聘AI相关人才并进行员工再培训。此外,企业正逐步采用AI于多个业务职能,包括营销、销售、产品开发和服务运营。尽管目前大部分公司尚未看到AI对企业整体利润的显著影响,但已有迹象表明,AI的应用正在增加收入并减少成本。 适合人群:企业高管、AI项目经理、战略规划人员以及对AI技术应用感兴趣的商业人士。 使用场景及目标:①帮助企业管理层理解如何通过AI技术优化内部流程并提高效率;②为AI项目的实施提供参考,确保企业在部署AI时能够最大化其商业价值;③指导企业在风险管理、人才招聘和员工技能升级方面做出明智决策。 其他说明:随着AI技术的发展,企业需要不断调整自身结构和流程以适应新技术带来的变化。文中提到的最佳实践如建立专门团队推动AI采用、定期沟通AI价值、高层领导积极参与等做法,可以为企业成功引入AI提供有益借鉴。此外,文中还强调了AI对不同行业的影响差异,以及个人使用AI工具的趋势变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值