2011-04-17 62 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
  • 上面的實現中,刪除以前添加的任何複選標記並添加新的一個到選擇的行。