弹出窗口内的选择器视图中的问题

时间:2013-06-12 12:41:47

标签: iphone ios ipad uipickerview uipopovercontroller

我在Ipad中创建应用程序我已经在Xib中使用了一个pickerviewController并且当用户点击特定按钮时我显示它我正在尝试将该选择器视图放在popover中  这就是我试图实现这个尝试的方式

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

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

1 个答案:

答案 0 :(得分:1)

看起来您的选择器视图隐藏在弹出窗口的某处,因为框架尚未正确设置。因此,尝试将拾取器视图的帧设置为等于弹出的边界作为起点:

pickerView.frame = popoverView.bounds;

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

现在,默认情况下,Xcode会将IBOutlet生成为 weak 属性,这将导致从超级视图中删除选择器视图时将其取消分配。因此,您需要首先将选择器视图声明为 strong 属性。

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

[pickerView removeFromSuperview];

你应该保持对pop view视图控制器的引用,例如声明它是一个属性,并调用dismissPopoverAnimated来正确地关闭pop。