UISplitViewController 中的 UIPopovercontroller
Posted
技术标签:
【中文标题】UISplitViewController 中的 UIPopovercontroller【英文标题】:UIPopovercontroller in UISplitViewController 【发布时间】:2014-03-27 02:18:25 【问题描述】:我的 detailviewcontroller 被称为 myDetailVC ,而 tableVC 只是 myDetailVC 一侧的一个表。
在 myDetailVC 中,我有一个应该显示 popoverviewcontroller 的按钮。但是,当我按下它时它会崩溃。
在我的 .h 文件中:
@property (strong, nonatomic) UIPopoverController *masterPopOverController;
和.m:
- (IBAction)goToPDF:(id)sender
viewPDFViewController *MPPWV =[[viewPDFViewController alloc] initWithNibName:nil bundle:nil];
self.masterPopOverController = [[UIPopoverController alloc] initWithContentViewController:MPPWV];
[self.masterPopOverController presentPopoverFromRect:[sender frame] inView:[sender superview] permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
[self.masterPopOverController setPopoverContentSize:CGSizeMake(100, 100) animated:NO];
在我的 xib 中,一切都连接得很好,因为我通过将其推送到视图控制器而不是弹出框来测试它。有人可以帮我解决这个问题吗?
【问题讨论】:
能成功推送到viewPDFViewController
吗?
@aaron 是的,我可以推送到 vewPDFVC,效果很好,但后来我发现我没有做正确的事情,它无法返回到 detailvc...
【参考方案1】:
首先,看起来您正在使用一个没有任何内容的视图控制器加载它:
viewPDFViewController *MPPWV =[[viewPDFViewController alloc] initWithNibName:nil bundle:nil];
尝试指定一个 Nib 名称(如果有的话)。您可能没有该视图控制器的 NIB。如果是这种情况,您可能有一个指定的初始化器-init
方法,您应该调用它。这样做而不是打电话给-initWithNibName:
其次,看起来您并没有保留要加载到弹出窗口中的视图控制器。它们可能需要强引用。尝试通过属性(或 ivar)保留它:
@property (nonatomic, strong) viewPDFViewController * MMPPWV;
然后,当您通过self
访问它时:
self.MPPWV = [[viewPDFViewController alloc] initWithNibName:nil bundle:nil];
【讨论】:
我会试试这个,让你知道会发生什么! 刚刚添加了另一个建议。 它有效!谢谢,我也改变了 initWithContentViewController:self.MPPWV以上是关于UISplitViewController 中的 UIPopovercontroller的主要内容,如果未能解决你的问题,请参考以下文章
UISplitViewController 可以成为 UITabViewController 中的选项卡吗?
UIScrollView 作为 UISplitViewController 中的根视图
关闭uisplitviewcontroller中的NavigationController后如何重新加载tableView?
presentViewController 正在禁用 UISplitViewController 中的所有 removeFromSuperview 消息