UIPickerView не возвращает правильные данные - PullRequest
0 голосов
/ 18 июля 2011

У меня есть главное представление с альбомным видом и портретное изображение, которое загружается как подпредставления вида оболочки. Как ландшафтный вид, так и портретный вид имеют объекты UIPickerView, которые связаны с ними. В моем источнике у меня есть все они как свойства, и у меня также есть обертка для пейзажистов и портретистов. Они определены как

@property (nonatomic, retain, readonly) IBOutlet UIPickerView *pickerTown;
@property (nonatomic, retain, readonly) IBOutlet UIPickerView *pickerType;
@property (nonatomic, retain, readonly) IBOutlet UIDatePicker *pickerFrom;
@property (nonatomic, retain, readonly) IBOutlet UIDatePicker *pickerTo;

@property (nonatomic, retain) IBOutlet UIPickerView *landscapePickerTown;
@property (nonatomic, retain) IBOutlet UIPickerView *landscapePickerType;
@property (nonatomic, retain) IBOutlet UIDatePicker *landscapePickerFrom;
@property (nonatomic, retain) IBOutlet UIDatePicker *landscapePickerTo;

@property (nonatomic, retain) IBOutlet UIPickerView *portraitPickerTown;
@property (nonatomic, retain) IBOutlet UIPickerView *portraitPickerType;
@property (nonatomic, retain) IBOutlet UIDatePicker *portraitPickerFrom;
@property (nonatomic, retain) IBOutlet UIDatePicker *portraitPickerTo;

И для каждой из читаемых оболочек у меня есть

- (UIPickerView *) pickerTown
{
    if(self.landscapeView.superview)
    {
        return landscapePickerTown;
    }else
    {
        return portraitPickerTown;
    }
}

Но когда я нахожусь в портретной или альбомной ориентации, и я, например, пытаюсь сказать

myHelper.selectedTown = [myHelper.towns objectAtIndex:[pickerTown selectedRowInComponent:0]];

Я не получаю выбранное значение, а только первое значение в массиве.

Данные добавляются следующим образом:

if(pickerView == landscapePickerType || pickerView == portraitPickerType) {
    return [myHelper.types objectAtIndex:row];
}else if(pickerView == landscapePickerTown || pickerView == portraitPickerTown){
    return [myHelper.towns objectAtIndex:row]; 
}else
{
    return @"";
}

и массив:

myHelper = [Helper sharedManager];
[myHelper.types addObject:@"None"];
[myHelper.types addObject:@"Food & Wine"];
[myHelper.types addObject:@"Test"];
[myHelper.towns addObject:@"None"];
[myHelper.towns addObject:@"Vanderbijlpark"];
[myHelper.towns addObject:@"Test"];

Что я здесь не так делаю?

1 Ответ

1 голос
/ 18 июля 2011

Если вы получаете только первый элемент, это означает, что [pickerTown selectedRowInComponent:0] всегда оценивается в ноль, что произойдет, только если pickerTown = nilЭто снова, скорее всего, из-за отсутствия подключения к розетке.

Но в этом случае я думаю, что вы обращаетесь к переменной экземпляра напрямую, а не к значению, которое возвращает метод.Если вы используете @synthesize для pickerTown, сделайте это @dynamic.И измените инструкцию на [self.pickerTown selectedRowInComponent:0], чтобы получить доступ к значению получателя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...