用户界面越来越冻结,而滚动UIPickerView,UITableView ios8,ios9

问题描述:

我有一个视图,其中包含一个pickerView和一个TextView。
当我呈现我的视图时,滚动越来越困难。
经过4-5次的观看后,它卡住了越来越多,最终在滚动UIPickerView时完全冻结。 PickerView拥有4个组件,其中3个具有大约50个值。用户界面越来越冻结,而滚动UIPickerView,UITableView ios8,ios9

请检查下面我PickerView代码:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
return 4; 
} 

// The number of rows of data 
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent: (NSInteger)component 
{ 
    return [[_pickerData objectAtIndex:component] count]; 
} 


- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent: (NSInteger)component 
{ 
    switch (component){ 
     case 0: 
      return 150.0; 
     case 1: 
      return 50.0f; 
     case 2: 
      return 20.0f; 
     case 3: 
      return 50.0f; 
    } 
    return 0; 
} 
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{ 
    UILabel* tView = (UILabel*)view; 
    if (!tView){ 
     tView = [[UILabel alloc] init]; 
     tView.font=[UIFont fontWithName:@"ArialNarrow" size:22]; 
     tView.textAlignment=NSTextAlignmentCenter; 
     tView.text=_pickerData[component][row]; 
     // Setup label properties - frame, font, colors etc 



     } 

     return tView; 
    } 

请帮助我。

感谢您的帮助加里。

我已经解决了这个问题。问题与线程有关。当应用程序冻结时,我通过暂停应用程序来发现问题。在左侧,我们可以看到正在运行的线程。从那里我发现了所谓的线程。这让主线程感到不安,这就是为什么应用程序被冻结的原因。

如果你只想显示textpickerView那么我建议你使用这种方法。

- (NSAttributedString*) pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component { 

    NSAttributedString *str = [[NSAttributedString alloc] initWithString:_pickerData[component][row] attributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor], NSForegroundColorAttributeName, [UIFont fontWithName:@"ArialNarrow" size: 22], NSFontAttributeName, nil]]; 
    return str; 
} 

使用

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

代替的可以是lable ALLOC多次。

希望它能帮助你。

+0

Garry,谢谢你的帮助。我试过了,但我又遇到了同样的问题。 – priya

+0

检查你的前导概念,可能是后台线程上的一些UI操作工作。 – Garry

+0

如果你不介意,你能告诉我如何调试线程问题?我在iOS方面经验不足。这对我很有帮助。 – priya