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

Swift 3:将控件分段为TableView。重新装入表时选定的索引丢失

Swift是一种流行的编程语言,用于开发iOS、macOS、watchOS和tvOS应用程序。在Swift中,可以使用UITableView来显示表格数据,并且可以将表格分段为多个部分。如果重新加载表格数据时选定的索引丢失,可能是由于以下原因:

  1. 数据源不正确:重新加载表格数据时,需要确保数据源中的数据与表格的分段和索引对应。可以检查数据源的结构和内容,确保正确设置每个分段的数据。
  2. 数据刷新问题:重新加载表格数据时,可能需要调用tableView的reloadData()方法来刷新表格视图。这将重新加载所有的分段和索引,并更新显示的数据。
  3. 索引保存问题:如果重新加载表格数据时选定的索引丢失,可能是因为没有正确保存选定的索引。可以尝试在重新加载数据之前保存选定的索引,并在重新加载数据后恢复选定的索引。
  4. 表格样式设置问题:在使用UITableView时,可以设置不同的表格样式,如plain、grouped等。不同的样式可能会影响表格的分段和索引显示。可以检查表格的样式设置,确保与分段和索引的设置相匹配。

对于解决这个问题,可以参考以下步骤:

  1. 检查数据源:确保数据源中的数据与表格的分段和索引对应。
  2. 刷新表格数据:在重新加载数据之后,调用tableView的reloadData()方法来刷新表格视图。
  3. 保存和恢复选定的索引:在重新加载数据之前,保存选定的索引,并在重新加载数据后恢复选定的索引。

如果以上步骤无法解决问题,可能需要进一步检查代码逻辑和调试。可以使用调试工具来跟踪代码执行过程,查找可能导致选定索引丢失的问题。

关于Swift和UITableView的更多信息,可以参考腾讯云的相关文档和教程:

请注意,以上答案仅供参考,具体解决方法可能因具体情况而异。

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

相关·内容

Ios常用第三方框架(二)

该项目通过三种形式展示页面之间切换,比如导航栏上多个tab切换、页面左右两端箭头指示切换,以及使用分段控件。...LxTabBarController - 改变了原生tabbar切换tab生硬效果,并加入滑动切换手势(有和界面上其它手势发生冲突风险,可根据具体项目予以关闭),swift版本。...MDIHorizontalSectionTableViewController - 根据产品需求开源了一个交互项目,可以理解横向SectionTableView,section和cell同时支持拖拽...QuickRearrangeTableView - 基于 UITableView 快速重排功能扩展子类。通过长按选定单元格然后滚动移动到指定位置。...会自动collection view处理完善,并将用户消息以合适美观方式显示出来。每个iOS项目都可以自动处理。

7.7K60
  • 窥探Swift之协议(Protocol)和委托代理(Delegate)回调使用

    接下来就是要模拟我们在TableView上显示数据了,在正常开放中这些数据往往来源于网络请求,而在本篇博客中就模拟数据源,来我们TableView提供显示数据。...1 /** 2 返回每个Section中Cell个数 3 4 - parameter tableView: 当前显示TableView 5...indexPath: cell索引信息 6 7 - returns: 返回要显示Cell对象 8 */ 9 func tableView(tableView...(2)UI就如数所示,EditViewController关联EditViewController.swift源文件后,再对其上面的使用到控件进行关联即可。...deinit是析构函数,用来观察是否引起强引用循环,因为我们是使用weak, 所以不会引起强引用循环,该deinit方法当返回,是会被释放掉

    3.5K80

    iOS - RxSwift 项目实战记录

    (rx_disposeBag) 大功告成,接下来说说section序列产生 ViewModel规范 我们知道MVVM思想就是原本在ViewController视图显示逻辑、验证逻辑、网络请求等代码存放于...可以看到我Output添加了一个序列,类型我们自定义LXFSection数组,在Input里面添加了一个请求类型(即要请求什么数据,比如首页数据) 我们通过 transform 方法input...,也可以订阅信号 // 外界通过该属性告诉viewModel加载数据(传入值是为了标志是否重新加载) let requestCommond = PublishSubject() 在transform...tableView设置刷新控件,并且在创建刷新控件回调中使用outputrequestCommond发射信号 tableView.mj_header = MJRefreshNormalHeader...,此时就会根据refreshStatus新值来处理刷新控件状态 好了,附上RxSwiftDemo。

    2.9K41

    Qt数据库sqlite总结

    ’xiaohong’)”); //向中插入3条记录  query.exec(“select * from student”);  来查询出中所有的内容。...ui->tableView->setModel(model); //重新定义模型,model直接从database.db数据库中插入数据 //ui->tableView->setEditTriggers...();    //返回所有选定模型项目索引列表 foreach (QModelIndex index, selected) {     int curRow=index.row();     model...第三个属性设为courseid属性外键,并将其显示coursename属性值(course在id上显示name属性值) 如果用户更改课程属性,那么他只能在课程中有的课程中进行选择...view->setModel(model); view->setItemDelegate(new QSqlRelationalDelegate(view)); QDataWidgetMapper类可以数据库和控件

    2.9K20

    RxSwift + MJRefresh 打造自动处理刷新控件状态

    面向协议 关于协议内容可以看下我之前这两篇文章 iOS - Swift 面向协议编程(一) iOS - Swift 面向协议编程(二) 总结协议两大作用:1、规范 2、定制能力 定义协议 Refreshable...或者collectionView赋予头部或尾部刷新能力,并且书写下拉刷新需要执行代码 // 以下拉刷新例 let refreshHeader = initRefreshHeader(liveCollectionView...接下来才是本文重点。 重点 刷新状态无非也就那么几种,下拉重载数据,上拉加载更多,请求完成结束下拉或上拉等等。。。那我们何必要在每个controller中再去管理这等琐事??...而至此,刷新控件状态是由变量 refreshStatus 来决定,此时 refreshStatus 又声明在 OutputRefreshProtocol 协议中,我们何不再定义一个方法,刷新控件状态交给...endRefreshingWithNoMoreData() default: break } }) } } 这时需要我们刷新控件对象

    1.9K41

    Swift-MVVM 简单演练(一)

    如果不想对原方法有改动,那么就要重新写一个完全一样只是最后面增加了这个需要参数而已一个新方法。 你看swift是不是真的简洁了许多。...当值改变时候,重新执行loadData方法 子类会重写基类loadData方法,因此不用在去子类重写此方法 // 设置刷新控件 refreshControl = UIRefreshControl(...则可以直接通过addTarget方式该视图中按钮添加监听方法 这样做代价是耦合度高,控制器和视图绑定在一起,但是省略部分冗余代码 ---- 调整未登录导航按钮 如果单纯在setupVistorView...字典转模型逻辑 上拉 / 下拉数据处理逻辑 下拉刷新数据数量 本地缓存数据处理 初体验 因为MVVM在swift中都是没有父类,所以先说下关于父类选择问题 如果分类需要使用KVC或者字典转模型框架设置对象...DEMO传送门:HQSwiftMVVM 参考: Swift 3 :Closure use of non-escaping parameter may allow it to escape Swift 3

    10.3K51

    iOS-UI控件之UITableView(一)

    UITableView 介绍 UITableView 是用来用列表形式显示数据UI控件 举例 QQ好友列表 通讯录 iPhone设置列表 tableView 常见属性 // 设置每一行cell...; // 设置表头控件 self.tableView.tableHeaderView = [[UISwitch alloc] init]; // 设置控件 self.tableView.tableFooterView...; UITableView右边索引条 属性 //设置tableView右边索引文字颜色 self.tableView.sectionIndexColor = [UIColor redColor...]; //设置右边索引文字背景颜色 self.tableView.sectionIndexBackgroundColor = [UIColor grayColor]; //数据源方法索引信息...:UITableViewCellStyleSubtitle reuseIdentifier:ID]; //尽量cell初始化设置,放在这个代码块中 //如果这个设置是所有cell都要保持一致

    1.8K130

    iOS开发遇到一些小问题记录

    1. tableView下方出现莫名空白 tableFooterView问题 一般来说,tableview会默认有一个footerview 解决:在视图加载这个footerview设为没有高度或者是空...这时如果系统计算预估值出现误差就会出现空白问题。 解决: 设置tableView自动预估值0 tableView.estimatedRowHeight = 0 2....解决:以源代码方式打开storyboard文件、检查是否有大量堆砌代码图片文件。直接删除掉。 重新以视图方式打开,提示丢失文件,在画面中可以看到一个?图片。重新设置一张图片即可!...3. performSegue不响应问题 在测试segue时候,直接使用代码调用,结果始终没有效果。...基于iOS自带邮件反馈kit开发用户反馈功能 用Swift写一个发送邮件iOS用户反馈 - 简书 9.

    80710

    在iOS中怎样创建可展开Table View?(下)

    开始我们需要知道点击行索引(记住,不是实际indexPath.row)而是可见cell索引,所以我们将会开始在下面的tableView代理方法里给它分配一个局部变量: func tableView...:在上面的代码我们只是改变一些cell"isVisible"值,那意味着,可见行总数已经改变了.所以,在我们重新加载tableView之前,我们需要app找到可见行索引值: func tableView...我使用了动画方式来重新加载点击cell组,但是如果你不喜欢这种方式,你可以修改....真正原因是因为我选择开始处理cell类型,我继续在tableView代理方法里修改,在里面,我添加一个else来处理没有展开cell情况,然后我们检查点击cell标识符值.如果标识符等于...(例如,cell描述列表保存到文件),然而,那已经超出了我们目标;我们最开始所想是实现一个可展开tableView,根据需求显示或隐藏cell,以及我们最终所做.我相信,在这篇教程中你会找到左右有用信息

    1.5K30

    iOS 9 Storyboard 教程(二上)介绍Segue静态单元格(static cell)

    (Note:如果你控件已经实现了IBAction连接,那么segue会重写它). 运行app,然后点击’+’号按钮.一个新tableView就会从下往上滑出....Storyboard提供了一个称为unwind segue特性,它使得Storyboard可以具有返回能力.这个是你接下来要实现内容.主要有3步: 1.用户创建一个选择对象,通常是一个按钮. 2...选择textField然后按住ctrl,并用鼠标拖拽到.swift文件顶部,类定义底部.当弹框出现时候,命名这个新连接nameTextField,然后点击Connect.在你点击Connect...之后,Xcode添加这个属性到PlayersDetailViewController类里而且会和storyboard相连: 在单元格里创建视图连线正是我所说你不应尝试用原型单元格,而用静态单元格是可以...为了避免出现这种情况,你应该让用户点击任何地方都能弹出键盘.那非常简单实现–只打开PlayerDetailsViewController.swift然后添加tableView(_:didSelectRowAtIndexPath

    3.3K10

    iOS 9 Storyboard 教程(一下)

    这个table view应该会显示一列玩家名单,所以现在你需要为这个app创建一个数据模型—一个包含Player对象数组.使用Swift File模板在iOS/Source里这个工程添加一个新文件....接下来,你需要把一个Player对象数组赋值给PlayersViewController.使用Swift File模板开始,创建一个新文件,命名为SampleData.把它添加到SampleData.swift...view 包含这两个控件. ?...,并将其分配给player. 3.可以看到标签和图片数据都来自player对象....(在另一方面,原型cell活动连接到视图控制器上动作是非常好.如果在你cell上有自定义按钮或者其他控件,你将会这么做) ---- 现在你已经连接了这些属性,你可以简化数据源代码.在PlayersViewController

    3.1K20

    Swift| 基础语法(五)

    前言 总结下 swift基础语法,里面涉及到:常量&变量、Swift数据类型、逻辑分支、循环、字符串相关、数组和字典、方法书写调用等内容,考虑到阅读体验分多篇来展示,希望对大家学习swift...// 程序创建UIWindow对象赋值给该程序委托对象window属性 self.window = UIWindow(frame:rect) // 创建ViewController...对象、并使用ViewController界面布局文件来 // 初始化该视图控制器关联用户界面 let vc = ViewController() //通过控件加载视图...} 在Swift中,创建tableViewCell方法可以分为两种创建tableView时候注册和需要使用时手动创建。先聊聊创建tableView时候直接注册cell: myTb?....//创建cell,不需要判断是否空,当没有可重用cell时候会自动创建 let cell:MyNewTableViewCell = (tableView.dequeueReusableCell

    2K30

    虚拟存储 分段分页段页解读

    整个程序一起载入内存中吗? 不是!采用离散存储方式 离散存储方式 (1) 分页存储管理方式。 (2) 分段存储管理方式。 (3) 段页式存储管理方式。...多级页虚拟地址划分成多个级别,每个级别都有一个对应,每个页都只包含一部分虚拟地址映射信息。其地址变换同两级页类似,只是中间有多级索引。...缺点,比如查找某个虚拟地址所对应物理地址需要遍历整个反置页,会给性能带来一些影响。 3. 地址变换 在利用反置页进行地址变换,是根据进程标识符和页号,去检索反置页。...段 在前面所介绍动态分区分配方式中,系统整个进程分配一个连续内存空间。而在分段式存储管理系统中,则是每个分段分配一个连续分区。进程中各个段,可以离散地装入内存中不同分区中。...在进行地址变换,系统逻辑地址中段号与段长度TL进行比较。若S>TL,表示段号太大,是访问越界,于是产生越界中断信号。

    38620

    在iOS中怎样创建可展开Table View?(上)

    对于“Work Experience”组来说: Level:当顶级cell被点击打开时候,另一个带有滑块控件cell就出现了,让用户指定一个假设工作经验.允许值在0...10这个范围之间,我们保持唯一整数值...首先,打开工程中ViewController.swift文件然后在类声明顶部加入如下属性: var cellDescriptors: NSMutableArray!...现在让我们实现这个新函数吧.你可能猜到了,我们通过所有的cell描述和我们在上面添加cell索引2D数组,把"可见"属性设置YES.显然,我们需要处理一个嵌套循环,但是却不难处理.下面是这个函数实现....在它函数体里第一个任务就是找出匹配索引路径可见行索引,这很容易做,因为我们需要是cell组合行(section and row).到目前为止我们没有处理过tableView代理方法,所以我必须提前说...对于cell来说,在上述语句中,cell标识符没有显示地增加,app也没有任何改变.然而,如果你想以一种不同方式处理,随意修改代码并且添加任何丢失部分.

    1.8K50

    操作系统之内存管理内存管理3.1 内存管理概念3.2 内存覆盖与内存交换3.3 内存连续分配管理方式3.4 内存非连续分配管理方式

    链接:由链接程序编译后形成一组目标模块,以及所需库函数链接在一起,形成一个完整装入模块。 装入:由装入程序装入模块装入内存运行。 这三步过程如图3-1所示。 ?...其优点是便于修改和更新,便于实现对目标模块共享。 内存装入模块在装入内存,同样有以下三种方式: 绝对装入。在编译,如果知道程序驻留在内存某个位置,编译程序产生绝对地址目标代码。...在 64位操作系统中,页划分则需要重新考虑,这是很多教材和辅导书中常见题目,但是很多都给出了错误分析,需要注意。 我们假设仍然釆用4KB页面大小。偏移量字段12位,假设页表项大小8B。...这样,其上一级分页,每个页框只能存储29(4KB/8B)个页表项,而不再是210个,所以上一级页表字段9位。后面同理继续分页。64=12+9+9+9+9+9+7,所以需6级分页才能实现索引。...image 图3-17 段页式系统逻辑地址结构 为了实现地址变换,系统每个进程建立一张段,而每个分段有一张页。段表表项中至少包括段号、页长度和页起始地址,页表表项中至少包括页号和块号。

    2.5K82

    用这些 iOS 技巧让你 APP 性能更佳

    如果不使用可复用 tableViewCell ,我们必须每一行创建一个新 tableViewCell,如下所示: func tableView(_ tableView: UITableView,...通过屏幕上不再可见 tableViewCell 放入队列中进行复用,并且当新 tableViewCell即将在屏幕上可见(例如,当用户向下滚动,下面的后续tableViewCell),视图将从此队列中检索...译者注:文段中没有 Xcode,下文中提及 Xcode 新建项目 为了让你应用感觉更快,你可以启动页设计向用户显示第一个页面(视图控制器)类似。...有时,由于内存不足,操作系统可能需要在应用程序处于后台从内存中删除应用程序,如果不保留状态,应用程序可能会丢失其对最后一个UI状态跟踪,可能会导致用户丢失正在进行操作!...在 storyboard 中将 UIView 设置不透明(查看大图) 或者我们可以在代码中修改 UIView isOpaque 属性: view.isOpaque = true 视图设置不透明将使绘图系统在渲染屏幕优化一些绘图性能

    3.2K30

    操作系统学习笔记-内存管理

    整个段可以临时复制到内存一个可用区域内(分段),或者可以一个段分为许多页,每页单独复制到内存中(分段与分页相结合) 强调!强调!强调!...Organization) 接下来逐一介绍 重定位 程序员事先并不知晓在某个程序执行期间会有其他哪些程序驻留在内存中 当程序执行时候,它可能被交换到磁盘,并且在被重新换入内存中,可能会与上一次内存区域不同...存储在磁盘上进程A由4页组成。装入这个进程,操作系统查找4个空闲页框,并将进程A4页装入这4个页框中,如图(b)所示。 进程B包含3页,进程C包含4页,它们依次被装入。...考虑一个n+m位地址 → 最左边n位是页号,最右边m位是偏移量 相对地址 → 逻辑地址 → 物理地址: 提取页号,即逻辑地址最左侧n位 以这个页号为索引,查找进程页中相应页框号k 页框起始物理地址...在上图例子中,n=4、m=12 所以最大段长度:212 = 4096 相对地址 → 逻辑地址 → 物理地址: 提取段号,即逻辑地址最左侧n位 以这个段号为索引,查找进程段中该段起始物理地址

    91910
    领券