0

我正在 Ipad 中制作应用程序我在 Xib 中使用了一个 pickerviewController,当用户单击特定按钮时我会显示它现在我试图将该选择器视图放在弹出窗口中这就是我试图实现这种品味的方式

pickerView.hidden=FALSE;
i have created outlet of picker and i unhide it here 

    UIViewController* popoverContent = [[UIViewController alloc] init];
    UIView* popoverView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 344)];
    popoverView.backgroundColor = [UIColor whiteColor];


    [popoverView addSubview:pickerView];
    popoverContent.view = popoverView;


    popoverContent.contentSizeForViewInPopover = CGSizeMake(320, 244);

    //create a popover controller
  UIPopoverController  *popoverController = [[UIPopoverController alloc] initWithContentViewController:popoverContent];
    CGRect popoverRect;
    popoverRect.origin.x =323;
    popoverRect.origin.y = 713;
    popoverRect.size.height = 215;
    popoverRect.size.width = 70;




    [popoverController presentPopoverFromRect:popoverRect
     inView:self.view
     permittedArrowDirections:UIPopoverArrowDirectionDown
     animated:YES];


    //release the popover content
    [popoverView release];
    [popoverContent release];

现在的问题是我的弹出窗口正在显示,但它完全是黑色的我正在努力解决这个问题请告诉我我做错了什么或更正代码谢谢你的帮助

4

1 回答 1

1

似乎您的选择器视图隐藏在弹出窗口的某个位置,因为框架尚未正确设置。所以尝试将选择器视图的框架设置为等于弹出的边界作为起点:

pickerView.frame = popoverView.bounds;

但是在将选取器视图添加为弹出窗口中的子视图之前,您需要从父视图中正确删除选取器视图。

现在,默认情况下 Xcode 将生成 IBOutlet 作为属性,这将导致选择器视图在从父视图中删除时被释放。因此,您需要首先将选择器视图声明为属性。

之后,您可以将其从当前超级视图中删除:

[pickerView removeFromSuperview];

您应该保留对弹出视图控制器的引用,例如声明它是一个属性,并调用dismissPopoverAnimated 以正确解除弹出。

于 2013-06-13T14:52:47.147 回答