【问题标题】:How to set title to UIPopOverController's Navigation Bar?如何将标题设置为 UIPopOverController 导航栏?
【发布时间】: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,但它从何而来?您不会在代码中的任何地方初始化它(至少不是在您显示的部分)。

标签: iphone ios ipad avfoundation uipopovercontroller


【解决方案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];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      • 2022-10-12
      • 1970-01-01
      相关资源
      最近更新 更多