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