2011-04-17 64 views
1

我想使用自定义选择器视图,将在选定行的前面加上一个检查标志。 我已经使用苹果示例代码用于在UICatalog示例定制UIPickerView。创建选取器时,我可以添加给定行的复选标记。但是,当用户旋转轮选择新行并将其从先前添加的行中删除时,我未能添加它。任何帮助,将不胜感激。 谢谢,自定义UIPickerView

+0

你可能想显示你已经把到目前为止给我们的东西去的代码(相关)部分。 :-) – 2011-04-17 11:33:42

回答

3

1)创建的UIView的子类,将在拾取代表一行。定义属性,例如,器isChecked,这将显示在该视图

2)在/隐藏对号 - pickerView:didSelectRow:inComponent:呼叫 - viewForRow:forComponent:用于预先选择的行,设定器isChecked = NO

3)呼叫 - viewForRow:forComponent:对当前选择的行,并设置器isChecked = YES;

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{ 
MyCustomRowView *prevRowView = [pickerView viewForRow:currentlySelectedRow forComponent:component]; 
prevRowView.isChecked = NO; 

MyCustomRowView *currentRowView = [pickerView viewForRow:row forComponent:component]; 
currentRowView.isChecked = YES; 
//then save currently selected row 
currentlySelectedRow = row; 
} 

4)你当请求您也应该检查当前所选行:

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view 
{ 
    .... 
    //Create or reuse view 
    .... 
    rowView.isChecked = (row == currentlySelectedRow); 
} 
0

如你不提供任何代码,所有我们可以给你是一个普遍的意见和看法。

  • 确保显示的viewController您UIPickerView实例inheritating的UIPickerViewDelegate -protocol
  • 设定UIPickerView对这个的viewController的delegate;例如pickerView.delegate = self;
  • 实施- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
  • 上面的实现中,删除以前添加的任何复选标记并添加新的一个到选择的行。