iOS 7 用 UIPickerView 打开 UITableViewController 很慢

2023-12-02

据此这个问题和 KyleC 的友善回答我已经实现了UITableViewController其中有许多行依赖于从核心数据中获取。每行显示一个简单的NSString(获取的对象的名称)并且有一个UIPickerView hidden.

问题是,当我点击上一个中的行时,这是绝对明显的UITableViewController打开UITableViewController使用选择器视图时,segue 转换会出现一些延迟。

我知道这一点是因为以前的控制器(它们甚至执行核心数据请求)的转换速度并不慢。

-

可以一些UIPickerView让转变变得如此缓慢且丑陋? 我应该在哪种模式下使用 Instruments 来了解哪个是缓慢犯罪的?

更重要的是:如果缓慢是由数量得出的UIPickerView我该如何优化这个?

我想澄清的是,该应用程序非常轻,从 Core Data 中获取的对象只有 4 个,其中 4 个UIPickerViews.


看来 UIPickerViews 和 UIDatePickers 从情节提要(也可能是 xib 的,但我没有尝试过)加载速度非常慢。在 iPad Air 上,加载静态 UITableViewController 大约需要 3 秒,该静态 UITableViewController 在“隐藏”单元格中包含 4 个 UIPickerView 和 8 个 UIDatePicker。 (对于在最新最好的硬件上运行的本机 UI 而言,3 秒是永恒!)

我发现的解决方法是在显示隐藏行之前以编程方式创建 UIPickerViews 和 UIDatePickers。我所做的是在 Interface Builder 中创建空单元格,将这些单元格链接到 IBOutlet 属性,然后使用以下方法创建 DatePickers 和 Picker 视图:

- (UIDatePicker*)datePickerForCell:(UITableViewCell*)cell {
    UIDatePicker * datePicker = [[UIDatePicker alloc] initWithFrame:cell.bounds];
    [datePicker setDatePickerMode:UIDatePickerModeDateAndTime];
    [datePicker addTarget:self action:@selector(pickerDateChanged:) forControlEvents:UIControlEventValueChanged];
    datePicker.hidden = YES;
    [cell addSubview:datePicker];

    return datePicker;
}

- (UIPickerView*)pickerViewForCell:(UITableViewCell*)cell {
    UIPickerView * picker = [[UIPickerView alloc] initWithFrame:cell.bounds];
    [picker setDelegate:self];
    [picker setDataSource:self];
    picker.hidden = YES;
    [cell addSubview:picker];
    return picker;
}

这将 UITableViewController 的加载时间减少到零点几秒,并且似乎不会影响显示隐藏表格视图的动画。

注意:我确实尝试在 viewDidAppear: 方法中创建选择器,但它似乎仍然延迟了 UI。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 7 用 UIPickerView 打开 UITableViewController 很慢 的相关文章

  • 当 isUserInteractionEnabled false 时,SKSpriteNode 不会让触摸通过

    我正在尝试在 SpriteKit 中创建一个覆盖层 方法是使用SKSpriteNode 但是 我希望触摸穿过覆盖层 所以我设置isUserInteractionEnabled为假 然而 当我这样做时 SKSpriteNode似乎仍然吸收所有
  • Mac OS X 上的 .dll 等效项 [重复]

    这个问题在这里已经有答案了 我来自一个Windows背景 我习惯于通过创建 dll 然后分发所有库和文档 因此 如果用户想要使用它 他会添加对库的引用并使用它 但是 在 Mac 中 我正在开发 SDK 并且我想要一种方法creating a
  • 如何检测用户是否第一次打开应用程序[重复]

    这个问题在这里已经有答案了 是否可以检测用户是否是第一次打开iOS应用程序 使用Objective C 我想在用户第一次打开应用程序时显示欢迎消息 但之后不再向他们显示 我正在寻找类似的东西 BOOL firstTime AppDelega
  • 从未调用过交互式委托方法

    我想在 ViewController 1 和 NavigationViewController 2 之间进行交互式转换 NavigationController 通过按钮调用 因此呈现时没有交互转换 它可以通过按钮或 UIPanGestur
  • 如何为 iPhone 6+、6 和 5 指定不同尺寸?

    我想让 iPhone 6 6 和 5 上的视图看起来几乎相同 在附图中 我的意思是 例如 取消 按钮在 iPhone 5 中距离屏幕左边缘应为 30 像素 在 6 中为 35 像素 在 6 中为 45 像素 其他元素也类似 如何为每种类型设
  • 有什么方法可以询问方法的名称吗?

    我正在尝试调试我正在开发的 iPhone 应用程序 向各种源文件添加 50 条 NSLog 语句的想法让我感到很兴奋 我想做的是写一对陈述 比如 NSString methodName self methodName NSLog metho
  • 如何在 iOS 13 中将 UISegmentedControl 的背景颜色设置为白色

    iOS 13 对 UISegmentedControl 进行了一些更改 包括切换所选片段时的非常漂亮的动画 但是我注意到它没有显示backgroundColor属性正确 它似乎总是有一点色彩 我见过回答如何设置的问题selectedSegm
  • iOS 7 tabBar 横线,如何去掉?

    Apple 在 iOS 7 中的 tabBar 上添加了一条细线 该线应该在 tabBar 和 UI 之间起到阴影或淡入淡出的作用 由于我使用的是定制的 tabBar 这条线非常令人恼火 你如何删除它 请告诉我这是可能的 否则我需要重新设计
  • CATextLayer 上 iOS 6 中不需要的垂直填充

    背景 我在 iOS 5 中开始了我的项目 并构建了一个带有图层的漂亮按钮 我在按钮上添加了一个 textLayer 并使用以下代码将其居中 float textLayerVerticlePadding self bounds size he
  • 优化视图状态

    是否有人对优化 ASP NET 应用程序的视图状态有任何想法或参考可以向我指出 我不想把它全部关闭 优化它的主要目标是提高性能 所以我不想运行一个昂贵的函数来递归地禁用某些控件的视图状态 因为该函数会减慢速度页面的加载时间会达不到目的 有任
  • 当应用程序进入前台时,如何重新启动基于块的动画?

    我有以下基于块的动画 UIView animateWithDuration 0 5f delay 0 0f options UIViewAnimationOptionRepeat UIViewAnimationOptionAutorever
  • 如何使用 IOS 12 在 UITableViewCell 中正确添加 UICollectionView

    由于某些原因 在使用 Xcode 10 beta 时 我无法正确显示 tableview 单元格内集合中的某些项目 在过去的四天里我尝试了我所知道的一切 我做了一个小项目样本来看看我的问题是什么 如果有人想在本地运行完整代码 请参见此处 h
  • 防止 iOS 键盘在 cordova 3.5 中滚动页面

    我正在使用 Cordova 3 5 和 jQuery mobile 构建 iOS 应用程序 我在大部分应用程序中禁用了滚动功能 但是 当我选择输入字段时 iOS 键盘会打开并向上滚动页面 我不想要这个功能 由于输入足够高 键盘不会覆盖它 我
  • iOS7 由 Interface Builder 生成的 NSIBPrototypingLayoutConstraint 自动布局约束问题

    以前在 iOS6 中 我的聊天消息视图控制器使用 IB 中精心构建的自动布局约束正确显示和动画 下面是 Xcode 5 中删除了约束的当前视图层次结构 升级到 XCode 5 和 iOS7 后 我发现我需要清除所有旧的约束才能解决默认的半透
  • 无法将项目添加到 NSMutableArray ivar

    我的目标是将字符串添加到数组中 并在我调用的方法中执行此操作 在这个方法中 我在数组中得到一个空值 但不知道为什么 我在课程开始时有这样的内容 NSMutableArray listOfEvents 以及我在每个事件上调用的方法 void
  • iOS:Facebook 登录访问令牌错误:由于模拟器错误,回退到从 NSUserDefaults 加载访问令牌

    根据说明进行配置后 我不断收到此错误 并且无法在我的应用程序上成功使用 Facebook 登录 我在 XCode 8 1 上运行它并使用 iOS 10 1 模拟器 我按照 Facebook iOS SDK 指南中的步骤操作 并将 Faceb
  • 诊断和仪器均缺少“僵尸”选项

    运行 Xcode 4 0 2 Zombie 选项丢失 其他 SO 帖子建议找到它的两个地方 Product gt Run looks like this Product gt Profile looks like this 奇怪的是 我之前
  • Mac 上的 Delphi - 可能吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我负责一个 Delphi Win32 项目管理应用程序 我刚刚完成了向 Delphi 2009 的迁移
  • 所有 RestKit 项目在归档时都无法构建

    这个问题涉及RESTKIT 0 9 x 如果您是 Restkit 新手 请考虑使用较新的版本0 10 x https github com RestKit RestKit tree v0 10 1 branch 我最近继承了一个项目 使用r
  • 使用日期 Swift 3 对字典数组进行排序

    我有一个名为 myArray 的数组 其中添加了字典 我希望该字典按时间排序 这是字典中的键 那个时间是在 String 中 时间的日期格式为 yyyy MM dd HH mm ss 我尝试使用下面的代码解决方案 但给出了 从 字符串转换

随机推荐

  • 单个队列,多个@RabbitListener但服务不同

    是否可以有一个 RabbitListener 例如 RabbitListener queues STORAGE REQUEST QUEUE NAME public FindApplicationByIdResponse findApplic
  • Swift - 上一周前一周的开始日和结束日

    今天是 3 月 6 日星期五 如何查找上一周前一周的开始日为 2 月 16 日 结束日为 2 月 22 日 16 代表我的国家保加利亚在美国将是 15 和 21 我使用 currentCalendar 像这样的东西应该有效 let cal
  • 在 printf 中使用 (+ve 整数) + “某个字符串”? [复制]

    这个问题在这里已经有答案了 include
  • 如何计算文本文件中包含多个空格字符的所有单词

    我正在尝试编写一个程序来计算 Pascal 文本文件中的所有单词 我希望它处理多个空格字符 但我不知道该怎么做 我尝试添加一个布尔函数 Space 来确定字符是否是空格 然后执行 while not eof file do begin re
  • 编写默认构造函数强制零初始化?

    这些是我的类定义 class Foo int ent public void printEnt const cout lt lt ent lt lt class Bar Foo foo public void printEnt const
  • ASP .NET:动态加载控件与 Visible = true

    推荐哪一款 让我解释一下我想要实现的目标 我有一个页面被许多用户使用 每个用户都有不同的角色 如管理员 操作员 普通用户 当客户端打开该页面时 我想显示一组取决于其角色的控件 按钮 管理员可以执行 x 和 y 但普通用户不允许执行这些操作
  • 将 Json 记录到 Shiny 服务器中的 STDOUT

    可以在 AWS 上配置 Docker 容器以发送出现在stdout发送到集中式日志服务 这是一个巧妙的技巧 如果您将适当的 JSON 打印到标准输出 那么您可以自动化日志记录管道的大部分 而不必担心文件 我很乐意与它合作shiny serv
  • BigQuery Data Studio 自定义查询

    我正在尝试将 BigQuery 中的自定义查询与 Data Studio 连接起来 我已经阅读了这里的指南 但我还有几个问题 我的查询应该提取最近 7 天的漏斗流数据 因此在 Data Studio 中使用自定义查询时 如果可能的话 如何编
  • Google Play 游戏服务邀请丢失

    我正在使用新的 Google Play 游戏服务在 Android 上开发我的游戏 现在我正在尝试包含邀请系统 我有 3 个 Google 帐户 用于通过 2 个 Android 设备和 1 个 Android 模拟器尝试邀请 我的问题是
  • 函数超时 (jQuery)

    function getNames some code 这个功能可以在一秒钟内完成 但有时它会无限期地冻结自身和页面上的 html 块 ajax 内部 我希望这个功能有时间限制 如果十秒内没有完成 则中止它 这个怎么做 使用 jQuery
  • 使用 javascript toDataURL 保存 HTML5 画布时如何插入 PNG 注释块?

    我有一个紧凑的canvas to png下载保护程序功能 参见下面的代码 这段代码运行得很好 我对它的输出很满意 主要是 第二次更换就够了吗 那个替代品会是什么样子 我唯一的其他选择是使用 imagemagick 对文件进行后处理 有任何想
  • SFENCE和LFENCE对相邻核心的缓存有什么影响?

    From the speech Herb Sutter in the figure of the slides on page 2 这里显示了单独的缓存 L1S和存储缓冲区 SB 1 在 Intel x86 处理器中cache L1 和 S
  • 传递变量时 SwiftUI 中的 .sheet 行为奇怪

    我在 SwiftUI 中使用 sheet 视图 并且在代码执行中观察到奇怪的行为 我正在查看 SignInView2 struct SignInView2 View Environment presentationMode var pres
  • 使用 AJAX 将数据从 HTML 表单提交到 WebMethod

    因此 我从 HTML 表单中获取数据 然后使用 AJAX 将数据发送到 Web 方法 然后发送到 sqlite 数据库 但我的 AJAX 调用失败 我搞砸了什么 我做得正确吗 HTML 表单
  • 相当于 Access 中的 SET IDENTITY_INSERT OFF

    正如标题所示 是否有任何方法可以关闭 Access 中的自动编号字段 以允许我插入具有我选择的 id 的行 就像在 SQL Server 中使用 SET IDENTITY INSERT OFF 所做的那样 您可以使用 SQL 插入 ID I
  • Laravel 5.5 中用户会话过期时自动重定向

    我想使用 Laravel 函数在用户会话过期时自动重定向到我的登录页面 当用户尝试访问另一个页面并且会话过期时 我会进行重定向 我设置了一个生命周期 这有助于由于用户不活动而自动注销 而我想要的是在会话超时时立即重定向 我尝试使用 Java
  • mysql数据库中的奇怪字符

    当我输入像 或 这样的奇怪字符并将其存储在 mysql 数据库中时 该字符将被转换为 它可能必须对我的字符集做一些事情 但我现在不知道从哪里开始 在页面顶部我插入了 该字段在dbase中的搭配是 utf8 unicode ci 在网页中显示
  • Android studio 在 KMP/KMM/KN 中添加了错误的 xcodeproj 位置

    我正在尝试运行全新的 KMM 应用程序和我之前创建的现有 KMM 应用程序 当我尝试从 Android Studio 运行 iOS 版本时 我没有 iOS 配置 当我创建 iOS 配置时 我收到一个必须首先修复的错误 当我按下 修复它 按钮
  • 检查 PHP 类中的会话变量

    在我的索引页面顶部 使用以下命令设置会话 SESSION language english 当我回显 SESSION language 时 它回显 english 但是会话值在 PHP 类中不可读 为什么呢 你必须打电话session st
  • iOS 7 用 UIPickerView 打开 UITableViewController 很慢

    据此这个问题和 KyleC 的友善回答我已经实现了UITableViewController其中有许多行依赖于从核心数据中获取 每行显示一个简单的NSString 获取的对象的名称 并且有一个UIPickerView hidden 问题是