Странный текст строки появляется в содержимом UIPickerView - PullRequest
1 голос
/ 14 марта 2012

Я написал следующий код, и почему-то PickerView показывает ?????вместо массива он должен отображаться.

Массив был определен в заголовке, а dataSource был установлен для контроллера представления.

 - (void)viewDidLoad
{
    [super viewDidLoad];

    arrayContext = [[NSMutableArray alloc] init];
    [arrayContext addObject:@"is"];
    [arrayContext addObject:@"wants"];
    [arrayContext addObject:@"loves"];
    [arrayContext addObject:@"hates"];
    [arrayContext addObject:@"enjoyed"];
    [arrayContext addObject:@"liked"];
    [arrayContext addObject:@"likes"];

    [pickerView selectRow:1 inComponent:0 animated:NO];
}

 - (void)viewDidUnload
{
    [textField release];
    textField = nil;
    [pickerView release];
    pickerView = nil;
    [arrayContext release];
    arrayContext = nil;
    [super viewDidUnload];

    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {

    return 1;
}

 -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    NSMutableDictionary *plistDict = [NSMutableDictionary dictionaryWithContentsOfFile:@"/var/mobile/Library/Preferences/com.ScotDev.QuickComPrefs.plist"];
    NSString *chosenContext = [NSString stringWithFormat:@"%@ ", [arrayContext objectAtIndex:row]];
    [plistDict setValue:chosenContext forKey:@"Context"];
}    

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {

    return [arrayContext count];
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row     forComponent:(NSInteger)component {

    return [arrayContext objectAtIndex:row];
}

1 Ответ

1 голос
/ 14 марта 2012
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;

Это delegate метод, а не dataSource метод. Чтобы ваш код работал, оба должны быть подключены к этому контроллеру представления.

...