UIPopovercontroller无法正常显示

时间:2013-05-23 19:03:40

标签: uipickerview uipopovercontroller

我需要显示一个简单的弹出视图,其中显示带有完成按钮和选取器视图的导航栏。我正在以编程方式执行所有操作,代码如下所示。

CGRect displayFrame = CGRectMake(0, 0, 300.0f,500.0f);
//((CGFloat)[self.pocModelData.arrayOfDistricts count] + 25)

UIView *popoverView = [[UIView alloc] initWithFrame:displayFrame];
UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0,0,popoverView.frame.size.width,20)];

UINavigationItem *navItem = [[UINavigationItem alloc] initWithTitle:@"some title"];
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissPopoverAnimated:)];
navItem.rightBarButtonItem = doneButton;
navBar.items = [NSArray arrayWithObjects:navItem, nil];

[popoverView addSubview:navBar];

CGRect displayFramePopOver = CGRectMake(0, 0, 600.0f,((CGFloat)[self.pocModelData.arrayOfDistricts count] - 25));

UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:displayFramePopOver];
[popoverView addSubview:pickerView];

UIViewController *tvc = [[UIViewController alloc] init];
//tvc.view = popoverView;
[tvc setView:popoverView];
self.popvc = [[UIPopoverController alloc] initWithContentViewController:tvc];
self.popvc.delegate = self;

//[popvc setPopoverContentSize:CGSizeMake(400, 200)];
[self.popvc presentPopoverFromRect: anchor.frame inView: anchor.superview permittedArrowDirections: UIPopoverArrowDirectionAny animated: YES];

不幸的是,因为我没有10的声誉,我无法发布代码执行的结果,所以我将尝试解释所显示的内容。 Popover显示但是有一个黑色矩形显示在海军蓝色背景上的视图。我正在寻找的是如何弄清楚设置视图的大小和正确弹出,以便它显示正确的弹出窗口导航栏和uipickerview。

1 个答案:

答案 0 :(得分:0)

你正以一种奇怪的方式经历这一切。这是你应该做的。不要使用自己的导航栏,只需使用UINavigationController附带的导航栏。

1。)创建一个navigationController,称之为navC
2.)创建一个viewController,称之为vC
3.)创建一个pickerView,将其命名为pV

4。)使用导航栏设置vC,使用属性self.navigationItem.rightBarButtonItem
5.)将pV插入vC - > [vC.view addSubview:pV]
6.)将vC插入navC - > navC.rootViewController = vC

7。)将navC插入popOver - > self.popvc = [[UIPopoverController alloc] initWithContentViewController:navC];

8。)呈现视图。

利润。 (P.S.不要那样命名你的变量。把它命名为long and descriptive)