【问题标题】:UIPIckerView in UIPopoverControllerUIPopoverController 中的 UIPIckerView
【发布时间】:2011-06-30 20:24:10
【问题描述】:

我不想调整 PickerView 的高度。我可以使用默认大小,我相信它是 320 x 216。我创建了这段代码来在我的 popovercontroller 中显示一个 pickerView,但是,我在控制台上收到了这些消息:

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];
}

【问题讨论】:

  • sortViewController 的边界(大小/宽度)是多少?您正在将 UIPickerView 的框架设置为 initWithFrame 方法中的框架;如果它不是您想要的大小,则必须更改 CGRectMake 调用以包含正确的值。
  • 是的,我最初也尝试过。我尝试将我的 sortViewController 的框架也创建为 320,216,但我仍然在控制台上看到这些语句。此外,如果我将 216 的高度更改为 500,我不会看到任何变化。如果我更改 contentSizeForViewInPopover 属性,我只会看到更改。
  • 祝你好运。我遇到了完全相同的问题。我认为 Popover 正在尝试调整选取器的框架。

标签: iphone uipickerview uipopovercontroller


【解决方案1】:

在我将UIPickerView 嵌入到具有相同尺寸(0, 0, 320, 216) 的通用UIView 中并将视图控制器的视图属性设置为UIView 之前,我遇到了同样的问题。

另外,我在UIPopoverViewController 上使用了setPopoverContentSize:animated: 方法来设置弹出框尺寸,而不是在UIViewController 上设置它。

希望对您有所帮助。

【讨论】:

  • 我也收到了-[UIPickerView setFrame:]: invalid height value... 错误,因为我在 UIPickerView 上设置了 autoresizingMask。
【解决方案2】:

我认为这条线是罪魁祸首。

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)];

【讨论】:

  • 是的,这就是我最初拥有的。我最初尝试制作 rect 320、216,然后我想这可能给我带来了问题。所以我尝试不将其设置为数字,而只是填写框架。不幸的是,我得到了两种方式的错误。 :-\。不过感谢您的意见!
【解决方案3】:

UIViewController 有一个名为contentSizeForViewInPopover 的方法。 如果您使用它为您的视图控制器设置预期大小(使用CGSize),您将能够防止UIPopoverController 错误地调整自身大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多