我有幾個UIPickerView
的相同的看法。當我在第一個UIPickerView
中選擇一個項目時,我想根據所選項目將數據加載到其他UIPickerView
的數據。從屬uipicker查看
示例:當我選擇法國作爲一個國家時,我應該在城市選擇器(巴黎,圖盧茲等)上選擇城市。
我該如何實現方法來做到這一點?
我有幾個UIPickerView
的相同的看法。當我在第一個UIPickerView
中選擇一個項目時,我想根據所選項目將數據加載到其他UIPickerView
的數據。從屬uipicker查看
示例:當我選擇法國作爲一個國家時,我應該在城市選擇器(巴黎,圖盧茲等)上選擇城市。
我該如何實現方法來做到這一點?
一旦你的第一個UIPickerView已被使用,您可以將數據加載到其他人,並呼籲:
[thePicker reloadAllComponents];
如果你有引用給每個工人的觀點,那麼你只希望做這樣的事
// These are instance variables within the view controller
NSString *selectedCountry;
NSArray *listOfCountries = @[@"France", @"Switzerland"];
// In the picker view delegate callback
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
if (pickerView == countryPickerView) {
selectedCountry = [listOfCountries objectAtIndex:row];
[cityPickerView reloadAllComponents]; // Or you can reload individual components
}
}
cityPickerView
的數據源應該查找selectedCountry
的值是什麼,並且與該給定國家的城市相同。
作爲一個側面說明,如果你有一個單一的視圖中的多個選擇器的觀點,你可能要考慮爲每一個UIPickerView一個子類,使子類中的委託/數據源的每個pickerview讓你不最終得到意大利麪代碼,並且必須檢查if (pickerView == countryPickerView)
,就像在這個例子中一樣。
非常感謝您的回覆,在我的程序中,我有一個函數將參數設置爲國家和與此國家相關的城市的返回列表。我應該在哪裏確切地調用此函數,我的目標是我獲得國家在viewdidload,但城市的名單,我不知道我應該在哪裏叫它,並使用「reloadcomponents」。請問,我是objectiv-C開發的新手。 – 2013-05-01 22:44:07
@MarouaneMouyarden你應該使用UIPickerViewDelegate方法。一個是: - (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component'。整個班級在這裏:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIPickerViewDelegate_Protocol/Reference/UIPickerViewDelegate.html – iwasrobbed 2013-05-01 22:59:22
你將不得不習慣於閱讀這些類的引用,看看是什麼方法和屬性可用於iOS上可用的所有不同控件和類。 – iwasrobbed 2013-05-01 23:00:01
爲什麼要使用兩個選擇器視圖?只需使用兩個組件即可。 – rmaddy 2013-05-01 23:08:58