gpt4 book ai didi

iOS 7 使用 UIPickerView 打开 UITableViewController 速度慢

转载 作者:可可西里 更新时间:2023-11-01 06:23:19 25 4
gpt4 key购买 nike

根据this question和 KyleC 的友好回答我已经实现了一个 UITableViewController,它有很多行依赖于从核心数据中获取。每行显示一个简单的 NSString(获取的对象的名称)并隐藏一个 UIPickerView

问题是,当我点击上一个 UITableViewController 中打开带有选择器 View 的 UITableViewController 的行时,这是绝对明显的,在 segue 转换中会有一些延迟。

我知道这一点是因为以前的 Controller (它们甚至执行核心数据请求)在转换过程中并没有那么慢。

-

某些 UIPickerView 能否使转换如此缓慢且非常难看?我应该在哪种模式下使用 Instruments 来了解哪个是缓慢的罪魁祸首?

更重要的是:如果速度慢是由 UIPickerView 的数量引起的,我该如何优化它?

我想澄清一下,该应用程序非常轻巧,从 Core Data 中获取的对象只有 4 个,有 4 个 UIPickerView

最佳答案

似乎 UIPickerViews 和 UIDatePickers 从 Storyboard(可能还有 xib 的,但我没试过)加载速度非常慢。在 iPad Air 上,加载静态 UITableViewController 大约需要 3 秒,该 Controller 在“隐藏”单元格中包含 4 个 UIPickerView 和 8 个 UIDatePickers。 (对于在最新最好的硬件上运行的 native UI 来说,3 秒是永恒的!)

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

- (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 的加载时间减少到零点几秒,而且似乎不会影响显示隐藏 tableview 的动画。

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

关于iOS 7 使用 UIPickerView 打开 UITableViewController 速度慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19239003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com