UIPIckerView в UIPopoverController - PullRequest
       27

UIPIckerView в UIPopoverController

15 голосов
/ 01 июля 2011

Я не пытаюсь изменить размер высоты PickerView. У меня все в порядке с размером по умолчанию, который, я считаю, составляет 320 x 216. Я создал этот код для представления pickerView в моем popovercontroller, однако я получаю следующие сообщения на консоли:

2

011-06-30 13:18:28.125 MiGenome[64357:207] -[UIPickerView setFrame:]: invalid height value 1024.0 pinned to 216.0 
2011-06-30 13:18:28.126 MiGenome[64357:207] -[UIPickerView setFrame:]: invalid height value 448.0 pinned to 216.0 
2011-06-30 13:18:28.127 MiGenome[64357:207] -[UIPickerView setFrame:]: invalid height value -16.0 pinned to 162.0 

Я не знаю, почему я получаю это, так как я пытаюсь использовать размер сборщика по умолчанию в поповер. Вот мой код Спасибо.

- (IBAction)presentSortPopover {
    UIViewController *sortViewController = [[UIViewController alloc] init];

    UIPickerView *sortPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 0, sortViewController.view.bounds.size.width, sortViewController.view.bounds.size.height)];
    sortViewController.view = sortPickerView;
    sortViewController.contentSizeForViewInPopover = CGSizeMake(320, 216);
    sortPickerView.delegate = self;
    sortPickerView.dataSource = self;
    sortPickerView.showsSelectionIndicator = YES;

    self.SortPopover = [[UIPopoverController alloc] initWithContentViewController:sortViewController];
    [self.SortPopover presentPopoverFromRect:_sortButtonPop.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

    [sortPickerView release];
    [sortViewController release];
}

Ответы [ 3 ]

10 голосов
/ 08 августа 2011

У меня была такая же проблема, пока я не вставил UIPickerView в общий UIView с теми же размерами (0, 0, 320, 216) и не установил свойство представления контроллера представления на UIView.

Кроме того, я использовал метод setPopoverContentSize:animated: на UIPopoverViewController для установки размеров поповера, а не на UIViewController.

Надеюсь, это поможет.

1 голос
/ 12 октября 2011

UIViewController имеет метод с именем contentSizeForViewInPopover.Если вы установите ожидаемый размер для вашего контроллера представления, используя его (используя CGSize), вы сможете предотвратить неправильное изменение размера UIPopoverController.

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

Я думаю, что эта строка является виновником.

UIPickerView *sortPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 0, sortViewController.view.bounds.size.width, sortViewController.view.bounds.size.height)];

попробовать

UIPickerView *sortPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 0, 320, 216)];
...