Ребята, я столкнулся с проблемой при внедрении метода делегирования для UIPickerview. Описание проблемы: я хочу иметь 3 компонента в pickerview и каждый компонент, имеющий различное количество строк. Код для этого выглядит следующим образомМетод делегата UIPickerView titleForRow не выполняется правильно?
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 3;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
NSInteger rows;
if (0 == component)
rows = 5;
else if (1 == component)
rows = 10;
else
rows = 15;
NSLog(@"Number of rows returned for component %d are rows %d",component, rows);
return rows;
}
После этого я реализую «titleForRow» метод делегата кода, для которого заключается в следующем:
#pragma -mark UIPIckerView Delegate Methods
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
//NSString *temp;
//temp = [[NSString alloc] initWithString:[self.pocModelData.arrayOfDistricts objectAtIndex:row]];
if (0 == component)
{
NSLog(@"String returned is %@ for row %d for component %d", [self.pocModelData.arrayOfDistricts objectAtIndex:row], row, component);
return [self.pocModelData.arrayOfDistricts objectAtIndex:row];
}
else if
(1 == component){
NSLog(@"String returned is %@ for row %d for component %d", [self.pocModelData.arrayOfDistricts objectAtIndex:row], row, component);
return [self.pocModelData.arrayOfDistricts objectAtIndex:row];
}else{
NSLog(@"String returned is %@ for row %d for component %d", [self.pocModelData.arrayOfDistricts objectAtIndex:row], row, component);
return [self.pocModelData.arrayOfDistricts objectAtIndex:row];
}
//return temp;
// return [self.pocModelData.arrayOfDistricts objectAtIndex:row];
}
Этот метод на выполнение возвращается только 3 строки для каждого компонента , как показано на следующих утверждений
2013-05-18 02:00:40.743 PopOverControllerExample[8228:c07] Number of rows returned for component 0 are rows 5
2013-05-18 02:00:41.221 PopOverControllerExample[8228:c07] Number of rows returned for component 1 are rows 10
2013-05-18 02:00:41.696 PopOverControllerExample[8228:c07] Number of rows returned for component 2 are rows 15
2013-05-18 02:00:42.035 PopOverControllerExample[8228:c07] Number of rows returned for component 0 are rows 5
2013-05-18 02:00:43.761 PopOverControllerExample[8228:c07] String returned is 1 for row 0 for component 0
2013-05-18 02:00:44.687 PopOverControllerExample[8228:c07] String returned is 2 for row 1 for component 0
2013-05-18 02:00:45.048 PopOverControllerExample[8228:c07] String returned is 3 for row 2 for component 0
2013-05-18 02:00:45.544 PopOverControllerExample[8228:c07] Number of rows returned for component 1 are rows 10
2013-05-18 02:00:46.131 PopOverControllerExample[8228:c07] String returned is 1 for row 0 for component 1
2013-05-18 02:00:46.620 PopOverControllerExample[8228:c07] String returned is 2 for row 1 for component 1
2013-05-18 02:00:47.380 PopOverControllerExample[8228:c07] String returned is 3 for row 2 for component 1
2013-05-18 02:00:47.772 PopOverControllerExample[8228:c07] Number of rows returned for component 2 are rows 15
2013-05-18 02:00:48.543 PopOverControllerExample[8228:c07] String returned is 1 for row 0 for component 2
2013-05-18 02:00:48.915 PopOverControllerExample[8228:c07] String returned is 2 for row 1 for component 2
2013-05-18 02:00:49.461 PopOverControllerExample[8228:c07] String returned is 3 for row 2 for component 2
Я не могу понять, почему его выполнение только 3 раза для каждого компонента? Я заполняю строки набором данных, поэтому источник данных является общим для всех из них. В чем проблема, я не могу схватить и застрять в течение некоторого времени? Любое руководство высоко ценится и благодарит заранее.
thnks @mvds, но можете ли вы уточнить немного больше? Исправьте меня, если я ошибаюсь, но вы имеете в виду, что его возвращающие 3 значения вызывают только 3 видимые строки? –
@experimentalist yes, так как требуется больше значений, они запрашиваются. Просто вращайте сборщик, и вы увидите, что запрашиваются другие значения. – mvds
большое спасибо за объяснение .. это помогло мне в решении моей проблемы !! :) –