如何将标题设置为 UIPopOverController 导航栏?
Posted
技术标签:
【中文标题】如何将标题设置为 UIPopOverController 导航栏?【英文标题】:How to set title to UIPopOverController's Navigation Bar? 【发布时间】:2013-04-01 07:14:01 【问题描述】:我正在开发 iPad 应用程序。这里它由 PopOver 组成。那里我需要显示相机并捕获图像。为此,我使用的是 AVFoundation 框架,默认导航栏没有出现。所以我按照以下步骤操作
cameraVC = [[CameraViewController alloc] initWithNibName:@"CameraViewController" bundle:nil ];
cameraVC.navigationItem.title = @"Take Photo";
UINavigationController *naviCon = [[UINavigationController alloc]initWithRootViewController:cameraVC];
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:naviCon];
self.popoverController = popover;
self.popoverController.delegate = self;
self.popover.popoverContentSize = CGSizeMake(450, 350);
[self.popoverController presentPopoverFromRect:CGRectMake(295, 40, 0, 0) inView:appDelegate.splitview.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
如果你已经解决了,请指导我哪里错了。在此先感谢
【问题讨论】:
使用您显示的代码,我根本无法重现该问题,因此我怀疑问题出在其他地方。尽管您似乎同时拥有popover
和popoverController
属性,但这确实有点奇怪。您正在设置self.popover
的popoverContentSize
,但它从何而来?您不会在代码中的任何地方初始化它(至少不是在您显示的部分)。
【参考方案1】:
如果导航栏没有出现,请在你的 cameraViewController 中添加一个 UIToolBar 来完成你想要的功能。
我在我的项目中做了这样的事情,我在 popOVer 中得到了导航栏。
PageSelectorViewController *pageSelector=[[PageSelectorViewController alloc]initWithStyle:UITableViewStylePlain] ;
UINavigationController *navControl=[[UINavigationController alloc]initWithRootViewController:pageSelector];
self.selectedPagesPopOver=[[UIPopoverController alloc]initWithContentViewController:navControl];
[self.selectedPagesPopOver presentPopoverFromBarButtonItem:showPages permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
我想从自定义矩形呈现 popOver 是问题,尝试从 BarButton 呈现并尝试。
【讨论】:
你在谈论什么苹果标准@HariniGoutham,我看不出我的代码有什么问题。【参考方案2】:如下修改代码并检查
cameraVC = [[CameraViewController alloc] init];
UINavigationController *naviCon = [[UINavigationController alloc]initWithRootViewController:cameraVC];
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:naviCon];
[self.presentPopOverController presentPopoverFromBarButtonItem:self.yourBarButton permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
然后在CameraViewController
的viewDidLoad
方法中编写如下代码
self.navigationItem.title = @"your title";
【讨论】:
【参考方案3】:这可以帮助你……
MyController* controller = [[MyController alloc] initWithNibName:@"MyController" bundle:nil];
UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:controller];
controller.title = @"My Title"; //or you can put this line in MyController class viewDidLoad method as self.title = @"My Title";
controller.contentSizeForViewInPopover = CGSizeMake(320.0, 480.0);
_myPopover = [[UIPopoverController alloc] initWithContentViewController:navController];
[_myPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
【讨论】:
以上是关于如何将标题设置为 UIPopOverController 导航栏?的主要内容,如果未能解决你的问题,请参考以下文章
如何将整个标题视图设置为 UICollectionView?
如何将 Header 设置为 UICollectionView