【问题标题】:How to display a view made with Interface Builder as a UIPopoverController?如何将使用 Interface Builder 制作的视图显示为 UIPopoverController?
【发布时间】:2012-05-03 11:48:12
【问题描述】:

我想在 Interface Builder 中安静地设计我的视图,然后能够将它们作为 UIPopoverController 动态显示。

我找到了 Ray Wenderlich 的 this precious tutorial,但我无法将其扩展到我的需要。

谁能帮帮我?

【问题讨论】:

  • 您的问题到底是什么?制作 UIViewControllers 并将它们呈现为弹出框非常容易,应该在该教程中进行介绍。给你带来麻烦的部分是什么?您是否正在尝试呈现未附加到视图控制器的视图?
  • 嗨 Bogdan,我有一个附加到视图控制器的视图。我不知道如何使用此代码将其显示为弹出框。事实上,在教程中,Ray 构建了一个表格视图控制器。

标签: ios uiview interface-builder uipopovercontroller


【解决方案1】:

这是我通常的做法:假设我有一个父视图控制器,我想在其中显示弹出框。 我将弹出控制器声明为该 VC 的属性(@property (nonatomic, retain) UIPopoverController* popOverController;)

使用新视图控制器(我们称之为 ViewController2)呈现弹出框的代码就是这个

ViewController2* viewController2 = [[ViewController2 alloc] initWithNibName:@"ViewController2"  bundle:nil];

self.popOverController = [[UIPopoverController alloc] initWithContentViewController:viewController2];

popOverController.popoverContentSize = CGSizeMake(350, 216); //or whatever size you need

//this will present the view controller from the sender's frame, assuming this code is used inside an IBAction 
//and the popover's arrow will point down
[popOverController presentPopoverFromRect:[sender frame] inView:self.view  permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES]; 

[viewController2 release];

[popOverController release];

差不多就是这样... 如果您遇到任何问题,我会尽力为您提供更多信息。

附:我并不是说这是最好的方法,我在 iO 方面的经验不到一年,但我们通常在我工作的地方这样做

【讨论】:

  • 它完全回答了我也理解了一切。非常感谢博格丹!如果您有兴趣,可以在我的博客上查看我的项目julienbayle.net
  • 我测试过,它有效。但是,在 VC2.mm 文件中,在与一些 UI 元素(滑块等)相关的 IBAction 中,当我修改一个值时,我有一个奇怪的崩溃 EXEC_BAD_ACCESS 与最终目标控制器相关......挖掘......我分配的事实并在同一个 IBAction 中释放 popover 和 VC 2 就可以了。 ..?
  • 是的,没关系。崩溃日志告诉您有关错误的哪些信息?另外,尝试启用 NSZombies,这通常对处理 EXEC_BAD_ACCESS 错误有很大帮助stackoverflow.com/q/5386160/855738
  • 非常感谢博格丹。使用 OpenFrameworks 作为核心(和第一个委托),我不必直接从弹出框内容调用方法:弹出框内容方法被包装到父视图控制器中的相同方法,最后是调用 OF 的方法。奇怪的。可能不是最好的,但工作正常。也感谢您对我的博客的评论:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-09
  • 2011-10-08
  • 2012-06-12
  • 2011-09-05
  • 1970-01-01
  • 2012-05-08
相关资源
最近更新 更多