Note that there are some explanatory texts on larger screens.

plurals
  1. POReusing view in UIPickerView with iOS 7
    primarykey
    data
    text
    <p><strong>EDIT 12-14-2015</strong> : 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</p> <p>I use a UIPickerView with custom views loaded from a Xib. I was using the method </p> <pre><code>-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view </code></pre> <p>from UIPickerViewDelegate to reuse my views. </p> <p>With iOS 6, my UIPickerview works perfectly and my views are reused. </p> <p>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.</p> <p>To be sure of what the problem is, I did a simple project with a UILabel :</p> <pre><code>-(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; } </code></pre> <p>With iOS 6, my views are correctly reused : </p> <blockquote> <p>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]</p> </blockquote> <p>But with iOS 7, it's an all-new story... : </p> <pre><code>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 </code></pre> <p>So what's wrong? iOS or ...?</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload