如何将标题设置为 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];

如果你已经解决了,请指导我哪里错了。在此先感谢

【问题讨论】:

使用您显示的代码,我根本无法重现该问题,因此我怀疑问题出在其他地方。尽管您似乎同时拥有popoverpopoverController 属性,但这确实有点奇怪。您正在设置self.popoverpopoverContentSize,但它从何而来?您不会在代码中的任何地方初始化它(至少不是在您显示的部分)。 【参考方案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];

然后在CameraViewControllerviewDidLoad方法中编写如下代码

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?

如何将标题设置为 QListView

如何将 Header 设置为 UICollectionView

如何将透明的“大标题”UINavigationBar 重置为默认外观设置?

如何将图像设置为 DataGrid 标题背景?

如何将标题设置为 UIPopOverController 导航栏?