在 iOS 7 中重用 UIPickerView 中的视图 [英] Reusing view in UIPickerView with iOS 7

查看:17
本文介绍了在 iOS 7 中重用 UIPickerView 中的视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

EDIT 12-14-2015 :这个问题在 iOS 7、iOS 8、iOS 9 上再次频繁报告......我认为苹果不再想要这个控件了,应该禁止我们使用它而不是让这样的重大错误

EDIT 12-14-2015 : This problem is again frequently reported on iOS 7, iOS 8, iOS 9.... I think Apple want not of this control anymore, and should just forbid us to use it instead of let such a major bug

我使用 UIPickerView 和从 Xib 加载的自定义视图.我正在使用该方法

I use a UIPickerView with custom views loaded from a Xib. I was using the method

-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row 
    forComponent:(NSInteger)component reusingView:(UIView *)view

从 UIPickerViewDelegate 重用我的视图.

from UIPickerViewDelegate to reuse my views.

在 iOS 6 中,我的 UIPickerview 可以完美运行并且我的视图被重用.

With iOS 6, my UIPickerview works perfectly and my views are reused.

从 iOS 7 开始,reusingView 总是 nil,所以我需要为每一行加载 NIB(我有 250 行).我的观点正在做一些处理,所以它可以占用一小部分内存,但 x250 = 大内存泄漏.

Since iOS 7, the reusingView is always nil, so I need to load the NIB for each row (I have 250 rows). My views are doing some treatments so it can take a little part of memory but x250 = big memory leak.

为了确定问题是什么,我用 UILabel 做了一个简单的项目:

To be sure of what the problem is, I did a simple project with a UILabel :

-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {

    UILabel *label = (UILabel *)view;
    if(view == nil) {
        label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, pickerView.frame.size.width, 76)];
    }
    else {
        NSLog(@"*******************************************************");
    }
    NSLog(@"Current inndex : %i",row);
    label.text = [NSString stringWithFormat:@"TITRE %i", row];
    return label;
}

在 iOS 6 中,我的视图被正确重用:

With iOS 6, my views are correctly reused :

2013-12-17 14:27:25.395 EssaiReusedViewPicker[261:907] 当前索引: 220 2013-12-17 14:27:25.396 EssaiReusedViewPicker[261:907]*********************************************************** 2013-12-17 14:27:25.397 EssaiReusedViewPicker[261:907] 当前指数:2212013-12-17 14:27:25.404 EssaiReusedViewPicker[261:907]*********************************************************** 2013-12-17 14:27:25.407 EssaiReusedViewPicker[261:907] 当前指数:2222013-12-17 14:27:25.409 EssaiReusedViewPicker[261:907]*********************************************************** 2013-12-17 14:27:25.410 EssaiReusedViewPicker[261:907] 当前指数:2232013-12-17 14:27:25.411 EssaiReusedViewPicker[261:907]*********************************************************** 2013-12-17 14:27:25.412 EssaiReusedViewPicker[261:907] 当前指数:2242013-12-17 14:27:25.414 EssaiReusedViewPicker[261:907]*********************************************************** 2013-12-17 14:27:25.415 EssaiReusedViewPicker[261:907] 当前指数:2252013-12-17 14:27:25.420 EssaiReusedViewPicker[261:907]*********************************************************** 2013-12-17 14:27:25.424 EssaiReusedViewPicker[261:907] 当前指数:2272013-12-17 14:27:25.425 EssaiReusedViewPicker[261:907]

2013-12-17 14:27:25.395 EssaiReusedViewPicker[261:907] Current inndex : 220 2013-12-17 14:27:25.396 EssaiReusedViewPicker[261:907] ******************************************************* 2013-12-17 14:27:25.397 EssaiReusedViewPicker[261:907] Current inndex : 221 2013-12-17 14:27:25.404 EssaiReusedViewPicker[261:907] ******************************************************* 2013-12-17 14:27:25.407 EssaiReusedViewPicker[261:907] Current inndex : 222 2013-12-17 14:27:25.409 EssaiReusedViewPicker[261:907] ******************************************************* 2013-12-17 14:27:25.410 EssaiReusedViewPicker[261:907] Current inndex : 223 2013-12-17 14:27:25.411 EssaiReusedViewPicker[261:907] ******************************************************* 2013-12-17 14:27:25.412 EssaiReusedViewPicker[261:907] Current inndex : 224 2013-12-17 14:27:25.414 EssaiReusedViewPicker[261:907] ******************************************************* 2013-12-17 14:27:25.415 EssaiReusedViewPicker[261:907] Current inndex : 225 2013-12-17 14:27:25.420 EssaiReusedViewPicker[261:907] ******************************************************* 2013-12-17 14:27:25.424 EssaiReusedViewPicker[261:907] Current inndex : 227 2013-12-17 14:27:25.425 EssaiReusedViewPicker[261:907]

但是对于 iOS 7,这是一个全新的故事......:

But with iOS 7, it's an all-new story... :

2013-12-17 14:36:09.555 EssaiReusedViewPicker[7209:70b] Current inndex : 0
2013-12-17 14:36:09.557 EssaiReusedViewPicker[7209:70b] Current inndex : 1
2013-12-17 14:36:09.557 EssaiReusedViewPicker[7209:70b] Current inndex : 2
2013-12-17 14:36:09.560 EssaiReusedViewPicker[7209:70b] Current inndex : 0
2013-12-17 14:36:09.560 EssaiReusedViewPicker[7209:70b] Current inndex : 1
2013-12-17 14:36:09.561 EssaiReusedViewPicker[7209:70b] Current inndex : 2
2013-12-17 14:36:09.563 EssaiReusedViewPicker[7209:70b] Current inndex : 0
2013-12-17 14:36:09.563 EssaiReusedViewPicker[7209:70b] Current inndex : 1
2013-12-17 14:36:09.564 EssaiReusedViewPicker[7209:70b] Current inndex : 2
2013-12-17 14:36:09.566 EssaiReusedViewPicker[7209:70b] Current inndex : 0
2013-12-17 14:36:09.567 EssaiReusedViewPicker[7209:70b] Current inndex : 1
2013-12-17 14:36:09.567 EssaiReusedViewPicker[7209:70b] Current inndex : 2
2013-12-17 14:36:09.568 EssaiReusedViewPicker[7209:70b] Current inndex : 1
2013-12-17 14:36:09.568 EssaiReusedViewPicker[7209:70b] Current inndex : 2
2013-12-17 14:36:09.569 EssaiReusedViewPicker[7209:70b] Current inndex : 0
2013-12-17 14:36:09.569 EssaiReusedViewPicker[7209:70b] Current inndex : 1
2013-12-17 14:36:14.172 EssaiReusedViewPicker[7209:70b] Current inndex : 3
2013-12-17 14:36:14.350 EssaiReusedViewPicker[7209:70b] Current inndex : 3
2013-12-17 14:36:14.351 EssaiReusedViewPicker[7209:70b] Current inndex : 2
2013-12-17 14:36:14.367 EssaiReusedViewPicker[7209:70b] Current inndex : 4
2013-12-17 14:36:14.667 EssaiReusedViewPicker[7209:70b] Current inndex : 4
2013-12-17 14:36:14.668 EssaiReusedViewPicker[7209:70b] Current inndex : 3
2013-12-17 14:36:14.700 EssaiReusedViewPicker[7209:70b] Current inndex : 5
2013-12-17 14:36:15.067 EssaiReusedViewPicker[7209:70b] Current inndex : 5
2013-12-17 14:36:15.067 EssaiReusedViewPicker[7209:70b] Current inndex : 4
2013-12-17 14:36:15.083 EssaiReusedViewPicker[7209:70b] Current inndex : 6
2013-12-17 14:36:15.367 EssaiReusedViewPicker[7209:70b] Current inndex : 6
2013-12-17 14:36:15.367 EssaiReusedViewPicker[7209:70b] Current inndex : 5
2013-12-17 14:36:15.400 EssaiReusedViewPicker[7209:70b] Current inndex : 7
2013-12-17 14:36:16.416 EssaiReusedViewPicker[7209:70b] Current inndex : 7

怎么了?iOS 还是...?

So what's wrong? iOS or ...?

推荐答案

我已向 Apple 技术支持报告了我的问题.他们确认了错误:

I have reported my problem to Apple Technical Support. They confirm the bug :

iOS 6 和 7 中的行为似乎确实存在差异.

There does indeed seem to be a difference between the behavior in iOS 6 and 7.

他们让我报告错误报告工具的错误.现在,等待修复:)

They ask me to report a bug on the bugreport tool. Now, just wait for the fix :)

这篇关于在 iOS 7 中重用 UIPickerView 中的视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆