2012-10-28 59 views
2

我想在UIPopoverController内提供UIViewController。我设计的界面生成器视图控制器,给它一个自定义类(比方说MyAppTestViewController),我试图创建一个酥料饼是这样的:在UIPopoverController内显示UIViewController

MyAppTestViewController *fxViewController = [MyAppTestViewController new]; 

self.fxPopover = [[UIPopoverController alloc] initWithContentViewController:fxViewController]; 
self.fxPopover.popoverContentSize = CGSizeMake(1024, 120); 

[self.fxPopover presentPopoverFromBarButtonItem:_fxButton permittedArrowDirections:UIPopoverArrowDirectionDown animated:NO]; 

当我按下按钮,将显示一个酥料饼在正确的大小正确的地方,但它是空的。我验证过MyAppTestViewControllerviewDidAppear方法被调用(由NSLog),但酥料饼的里面是空的:

ipad screenshot

我缺少的东西?

回答

2

我看到你在评论中提到你正在使用故事板。那么为什么不使用弹出式跳跃到你的MyAppTestViewController?您可以将segue直接连接到工具栏上的Effects按钮。 (或者,可以从您的演示视图控制器中调用performSegueWithIdentifier:)。您可以通过将故事板上的UILabel投入MyAppTestViewController并查看它是否正确显示来进行快速测试。

enter image description here

+0

我一直在想这个问题,我不知道为什么。这工作完美。谢谢 –

1

我认为这个问题是在这里:

MyAppTestViewController *fxViewController = [MyAppTestViewController new]; 

通常你会使用[[MyViewControllerClass alloc] initWithNibName:nil bundle:nil](假设你有一个匹配的名称的厦门国际银行文件)。我不相信我曾经见过用new初始化视图控制器。 Objective-C中的所有东西都是alloc-init。

苹果文档:UIViewController Class Reference

报价:

要使用笔尖初始化视图控制器对象,您使用 initWithNibName:包:方法来指定由 视图控制器使用的笔尖文件。然后,当视图控制器需要加载其视图时,它会使用存储在nib文件中的信息自动创建和配置视图。


编辑:

迷人,好吧好吧。看起来您正确使用新关键字here is bit of an explanation of this

很好,那不是问题。你是否尝试过打破viewDidAppear方法并使用调试器打印出视图属性,检查其框架,检查其超级视图等等,试图更好地理解问题?您可能已经知道如何执行此操作,但命令将为po self.view等等。

在任何情况下,我也发现this,虽然它只涉及弹出窗口演示的机制,而不是内容视图分配,您似乎已经失望了。

+0

没有,我一直在初始化许多视图控制器与'成功new',它只是一个页头,初始化的简写。我不使用单独的笔尖,它是我的故事板中的视图控制器。 –

+0

最后提供的链接非常有用,谢谢。我终于决定通过呈现popover赛格来实现popover控制,就像Jay Slupesky回答的那样。我觉得视觉设计更清洁,尽量避免代码设计尽可能..谢谢你的链接。 –

相关问题