首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在启用isEditing的情况下让UITableViewCell停留在底部?

在启用isEditing的情况下,要让UITableViewCell停留在底部,可以通过以下步骤实现:

  1. 在UITableViewDelegate中的tableView(_:willDisplay:forRowAt:)方法中,判断当前的UITableViewCell是否处于编辑状态(isEditing),如果是,则将UITableView的contentOffset设置为最底部的位置。
代码语言:txt
复制
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    if tableView.isEditing {
        let lastSectionIndex = tableView.numberOfSections - 1
        let lastRowIndex = tableView.numberOfRows(inSection: lastSectionIndex) - 1
        if indexPath.section == lastSectionIndex && indexPath.row == lastRowIndex {
            tableView.contentOffset = CGPoint(x: 0, y: tableView.contentSize.height - tableView.bounds.size.height)
        }
    }
}
  1. 在UITableViewCell的setEditing(_:animated:)方法中,同样判断是否处于编辑状态(isEditing),如果是,则执行动画让UITableViewCell滑动到底部位置。
代码语言:txt
复制
override func setEditing(_ editing: Bool, animated: Bool) {
    super.setEditing(editing, animated: animated)
    
    if editing {
        let tableView = superview as? UITableView
        let lastSectionIndex = tableView?.numberOfSections ?? 0 - 1
        let lastRowIndex = tableView?.numberOfRows(inSection: lastSectionIndex) ?? 0 - 1
        let lastIndexPath = IndexPath(row: lastRowIndex, section: lastSectionIndex)
        
        tableView?.scrollToRow(at: lastIndexPath, at: .bottom, animated: animated)
    }
}

这样,在启用isEditing的情况下,UITableViewCell就能够停留在底部了。

  • UITableViewCell(名词):UITableViewCell是UITableView中的一种特殊的视图,用于显示表格中的单个行。
    • 分类:UITableViewCell主要分为可复用的UITableViewCell和自定义的UITableViewCell。
    • 优势:UITableViewCell具有高度可定制化的特性,可以根据需求进行自定义布局和样式,适用于各种表格显示需求。
    • 应用场景:UITableViewCell广泛应用于iOS开发中的UITableView,用于展示列表数据,比如联系人列表、消息列表等场景。
    • 推荐的腾讯云相关产品:腾讯云移动应用分析(MA),提供了丰富的数据分析和监控能力,帮助开发者更好地了解和优化移动应用的用户体验。

请注意,以上答案中没有提及亚马逊AWS、Azure、阿里云、华为云、天翼云、GoDaddy、Namecheap、Google等流行的云计算品牌商,同时给出了完善且全面的答案内容。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS 面试策略之系统框架-UIScrollView及其子类

如何定制不同 Cell UI、如何与用户交互、如何与服务器端数据同步、如何在滑动时最大限度保证界面的流畅,这些都是考察要点,是一个 iOS 工程师必备基本技能。...一般情况下我们对 UIScrollView 操作,例如 addSubview 这样操作都是在 contentView 上进行。...最简单做法是直接在 viewDidLoad 里设置 tableView isEditing 属性为 true。...网络请求是一种耗时且昂贵操作,为了提高用户体验,开发者经常运用预加载方式提前请求,这样可以在用户滑动到列表最底部之前提前获得最新数据,无需用户等待。这就是无限滚动列表。...关键词:#UICollectionViewLayout 面试中当场实现一个瀑布流,在不允许上网查询情况下算是十分困难了。而且代码量很大,所以我们这道题重在分析思路。

2.6K21

React Native基础&入门教程:以一个To Do List小例子,看props和state

state和props重要特点是,默认情况下。当它们改变时,RN会自动东西渲染与之相关界面以保持和state与props同步。...为什么说“默认情况下”,是因为我们可以利用生命周期函数手动“截断”这个渲染逻辑,本文暂不涉及。 另外,在RN中,其实也可以使用不属于props和state变量,来手动控制组件状态。...“多选”用以每一个待办项Checkbox显示出来,并且显示最下面包含全选Checkboxfooter。 要完整地完成这个应用,本文篇幅是不够,后续文章会深入到更加细节地方。...当开始构思这个组件时候,至少有两件事情是需要考虑: 待办事项数据源,应该来自那里?显示和隐藏底部状态存应该在哪里?...它控制了左上角文字是"取消"还是"多选",也控制了底部是否显示。 我们在控制底部是否显示时,调用了一个自定义函数,用它返回值最为内容插入在调用函数位置。

1.6K30
  • 从零到部署:用 Vue 和 Express 实现迷你全栈电商应用(三)

    就是视图层触发事件, click、submit等,反过来修改逻辑层数据方法,methods 使得数据可以双向流动。...事件绑定 有了上面的功能,我们可以 HTML 动起来了,但是还缺点什么,比如我们 HTML 属性, id、class 等,是不是也能动态获取变化值,你还别说,还真的可以,Vue 模板语法为我们提供了...模板语法:条件选择 上面的讲述了循环是如何在 Vue 中使用,下面我们来看一看条件语法是如何在 Vue 中使用: Update Product</span..._id 表示首先检验 model manufacturer 属性是否存在,正常情况下它应该是一个对象,如果 model.manufacturer 属性存在,那么获取 model.manufacturer...最后一个 form-group 我们使用了条件选择语法,判断 isEditing,来渲染不同按钮文案。

    1.3K50

    iOS中表视图(UITableView)使用详解

    通过这个属性,可以手动设置分割线位置偏移,比如你向tableView分割线只显示右半边,可以如下设置: UITableView * tab = [[UITableView alloc]initWithFrame...重载tableView - (void)reloadData; 重载索引栏 - (void)reloadSectionIndexTitles; 这个方法常用语新加或者删除了索引类别而无需刷新整个表视图情况下...indexPathForCell:(UITableViewCell *)cell;  根据一个矩形范围返回一个信息数组,数组中是每一行row位置信息 - (NSArray *)indexPathsForRowsInRect...:(CGRect)rect;  通过位置路径获取cell - (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath;  获取所有可见...五、tableView编辑操作 设置是否是编辑状态(编辑状态下cell左边会出现一个减号,点击右边会划出删除按钮) @property (nonatomic, getter=isEditing) BOOL

    1.4K30

    从零到部署:用 Vue 和 Express 实现迷你全栈电商应用(三)

    就是视图层触发事件, click、submit等,反过来修改逻辑层数据方法,methods 使得数据可以双向流动。...事件绑定 有了上面的功能,我们可以 HTML 动起来了,但是还缺点什么,比如我们 HTML 属性, id、class 等,是不是也能动态获取变化值,你还别说,还真的可以,Vue 模板语法为我们提供了...模板语法:条件选择 上面的讲述了循环是如何在 Vue 中使用,下面我们来看一看条件语法是如何在 Vue 中使用: Update Product</span..._id 表示首先检验 model manufacturer 属性是否存在,正常情况下它应该是一个对象,如果 model.manufacturer 属性存在,那么获取 model.manufacturer...最后一个 form-group 我们使用了条件选择语法,判断 isEditing,来渲染不同按钮文案。

    1.3K10

    MyLayout&TangramKit 重大升级!

    假设有如下布局: 布局界面 我们希望父容器视图S尺寸是自适应,那么就需要设置S视图右边边界等于子视图B右边边界,同时需要设置S视图底部边界等于子视图C底部边界。...在设置约束依赖时将容器视图上下左右分别依赖UIScrollView视图上下左右边界,如果需要上下滚动则将容器视图中底部子视图底部边界依赖容器视图底部边界。...,容器视图四个边界分别等于滚动视图四个边界,这里必须要这样设置。...,如果需要上下滚动则将容器视图中底部子视图这里是C底部边界依赖于容器视图底部边界。...在上面的第1节中有介绍如何将一个容器视图尺寸设置为自适应,而一般情况下在编写UITableViewCell布局代码时,都将所有的子视图添加到contentView这个视图中,因此要实现UITableViewCell

    2.1K20

    UITableView性能优化-中级篇

    YYCache中是否有该url,有的话,直接读取缓存图片数据,没有的话,走图片下载逻辑,并缓存图片 问题所在: 如上设置,如果我们cell一行有20行,页面启动时候,直接滑动到最底部,20个cell...cell 在2基础之上,所有的cell请求图片数据,并显示出来 步骤1: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath...效果,其实也是不满足需求, 提示会被调用代码如下: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath...-)iOS本来就是提前进入寒冬,iOS小白们可以尝试思考下这个问题 问:UITableView圆角性能优化如何实现 答: 服务器直接传圆角图片; 贝塞尔切割控件layer; YYWebImage为例...答:其实是有的,简单来说YYWebImage 可以拆分成两部分,默认情况下,我们拿到回调,是走了 download && cache流程了,这里我们多做一步,取出cache中该url路径对应图片,

    1.6K20

    vue-cli项目结构

    这篇文章献给我homie苏蕾儿童鞋,她在学习vue项目的时候少走一点弯路(径直冲向末路哈哈哈)。 本文将会简单介绍一下vue生态环境以及其中涉及思想。...通常情况下,我们会将其作为一个完整项目使用。这里我使用vue-cli新建一个基于webpackvue项目。....gitignore文件记录了git提交时不上传内容,node_modules中全部内容。 index.html文件是项目的skeleton,我们来看一下它内容: <!...因此可以在App.vue文件中定义整个项目最通用结构比如Header,Sidebar等等。其它情况下也可以不对其进行任何修改。...在不指定版本号情况下会下载最新版本 npm run dev: 运行开发配置下项目,我们用这个指令在开发过程中启动项目并debug 进入代码 该todo来自于vue官网上,需要查看源码可以去官网github

    88740

    实现 iOS 无感知上拉加载更多

    什么是无感知上拉加载更多 什么是无感知,这个这样理解:在网络情况正常情况下,用户对列表进行连续上拉时,该列表可以无卡顿不停出现新数据。...网上思路(一) 就在我思考同时,我也在网络上需求实现这个功能答案,后看到这样一个思路: 实现方法很简单,需要用到 tableView 一个代理方法,就可轻松实现。...- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:...Gif可能看起来还好,我说我调试感受: 虽然做到了上拉无感知,但是当手滑速度比较快时候,到底了新数据没有回来,就会在底部等一段时间。...就可以实现,该属性 triggerAutomaticallyRefreshPercent 默认值为 1,然后改成 0 的话划到底部就会自动刷新,改成 -1 的话,在快划到底部 44px 时候就会自动刷新

    2.3K40

    整洁 Table View 代码

    大多数情况下,这就是你想要,但如果不是,还有其他方法来解决这个问题,就像下面我们展示那样。...结合 table views,我们来具体看看如何在 view controllers 和 views 之间分离关注点。...由于我们同时也希望 model 和 view 之间明确分离,所以通常把这个任务转移到 table view data source 中去处理: - (UITableViewCell \*)tableView...Cells 可复用 有时多种 model 对象需要用同一类型 cell 来表示,这种情况下,我们可以进一步 cell 可以复用。...然后简单修改 category 中设置方法,它可以接受遵循这个 protocol 任何对象。这些简单步骤 cell 和任何特殊 model 对象之间得以解耦,它可适应不同数据类型。

    61640

    iOS 9人机界面指南(四):UI元素(下)- 腾讯ISUX

    API注释 想要了解如何在代码中定义详情展开按钮,可以参考UITableViewCell Class Reference和UIButton....如果用户可以在你应用程序打开超过20个视图,请考虑给视图一个不同展示方式,以提供关于视图详细信息,使其支持不连续导航。 在打开视图底部边缘和屏幕底部边缘里垂直居中页面控件。...举个例子,你可以在文本框左侧或者右侧加入自定义图形,或者加入系统按钮,书签按钮等。一般来说,文本框左侧用于表述文本框含义,而右侧用于展示附加功能,书签。...理想情况下,表意明确警告文案和逻辑清晰按钮文案已经足以用户正确判断自己该按哪个按钮了。...最好能设计出一种符合逻辑并始终保持一致过渡方式,用户容易感知并且记忆。在没有充分理由支持情况下,最好不要改变这些默认过渡方式。

    13.2K30

    Flutter BottomNavigation 底部导航详解 及问题记录

    Flutter BottomNavigation 底部导航详解 主要是使用了 Scaffold下 bottomNavigationBar 整个属性,在这个属性下,可以添加底部图标的背景色,选中颜色,...以及是否粘贴到底部,和导航个数 在app主页面,home指向底部导航栏组件 home: BottomNavigation(), 底部导航栏组件集成 StatefulWidget 在内部创建一个带有状态组件...= 0xFFFA8C16; 这里多数一句 Flutter 提供了两套预设主题UI 这些UI有很多常量可以直接引入使用 颜色, 按钮,图标 Colors.white // 白色颜色 Icons.home..._incrementCounter() { setState(() {_counter++;}); } 使用void关键字修饰, 使用setState 来修改内部变量 问题1: 假如页面停留在首页...问题2: 假如现在要做换肤功能,那要如何做? 问题3: 目前dart辨析时候,有很多括号, 格式不够优美,有没有第三方,成熟组件以供使用 问题4: 如何在页面切换时 ,使用动画,自己写?

    3.3K10

    iOSMVC框架之控制层构建(下)

    那么我们如何在控制器中使用这个业务模型呢?...} @end 通过上述方法我们不用再通过代码复制来构建两个不同视图控制器了,不同场景启用不同视图控制器即可。...UITableView是目前App中使用最多控件之一。UITableViewCell是属于视图层次对象。一般情况下某个UITableViewCell中展示数据又来自于业务模型层数据模型。...同理如果我们要自定义UITableViewCell时我们也可以UITableViewCell派生类暴露出视图属性来解决问题。这种场景一般用于界面不复杂而且逻辑比较简单情况。...因此这种情况下我们可以这个UITableViewCell持有这个数据模型也未尝不是一个解决方案!!虽然MVC里面强调各个层次之间分离,但是在一些实际场合中还是可以允许一些耦合场景出现

    4.4K30

    【IOS开发基础系列】Table View开发专题

    instance of the appropriate class, insert it into the array, and add a new row to the table view.     } }  启用上面两个代理...因此非必要,可以将tablecell及其子视图opaque属性设为YES(默认值)。...然而view是很大对象,创建它会消耗较多资源,并且也影响渲染性能。如果你table cell包含图片,且数目较多,使用默认UITableViewCell会非常影响性能。...出现这种现象原因就是主线程执行了耗时很长函数或方法,在其执行完毕前,无法绘制屏幕和响应用户请求。其中最常见就是网络请求了,它通常都需要花费数秒时间,而你不应该用户等待那么久。...解决办法就是使用多线程,子线程去执行这些函数或方法。这里面还有一个学问,当下载线程数超过2时,会显著影响主线程性能。

    35920

    埋点统计~~从UITableView数据曝光说起

    目前可以这么定义---当页面滑动结束或首次加载完成时呈现给用户所有商品均算是曝光 UITableView中用户浏览中略过商品条目 这个就有意思了,用户在快速浏览中可能会快速滑动翻页,更有甚者直接快速滑动之后列表自己滑动...,UI在阻尼情况下会慢慢自动静止,那么这被用户快速划过忽略就是商品条目就是产品中没有曝光数据。...当前展示条目比较好计算,直接使用系统API即可 func getAllFullVisiableCelles() -> [UITableViewCell] { return self.visibleCells.filter...采集结果 我们来分析一下这个结果是如何获取 1 记录最底部位置(需要完全展示)v0 2 滑动之后自由滑动需要超过一屏幕 3 结束滑动记录顶部位置v99+ 那么v0~v99+ 之间即是快速滑动过程中没被用户认真浏览数据...logItemObserve(tableView.getAllFullVisiableCells()) } } 由于可能会出现用户在上下滑动之后才屏幕自由放飞,因此我们需要根据最终数据来判断最终滑动方向

    1.4K32

    【死磕iOS】处理不等高TableViewCell小花招

    Cell也是一样,想知道cell到底有多高?直接问Cell本人就好了。直接法,就是把数据布局到Cell上,然后拿到Cell最底部控件MaxY值。...自己来算算看~ 通常情况下,Cell之所以不等高,是因为Cell内部文字区域高度会根据文字数量动态变化,图片区域高度会根据图片数量而自动变化。...知道这个干嘛,直接通过iOS8,妹纸爱上你不就好啦~ 其实,iOS8已经提供了直接通过XIBCell高度自适应方法了,只要简单拖拖线,根本木有必要计算Cell高度,就可以搞定不等高Cell 第一步...View设置约束 - 除了要定高、定宽、左上角粘着Label外,还要设置bottom距contentViewbottom间距为固定值,0 第三步:一定要注意 - 不能实现heightForRow代理方法...所以,该方法请选择使用… 结论 处理不等高TableViewCell,优先使用iOS8新特性(课题一方案三) 不能使用iOS8新特性情况下,优先选择课题一方案一+课题二方案三组合 不能用上面两种,优先选择使用课题一方案一

    1.3K80
    领券