从嵌入在容器视图中的视图控制器中分离

Posted

技术标签:

【中文标题】从嵌入在容器视图中的视图控制器中分离【英文标题】:Segue from the view controller embedded in a container view 【发布时间】:2014-03-31 05:47:35 【问题描述】:

我的应用程序有一个UIViewController,它嵌入在UINavigationController 中。 UIViewController 里面有一个容器视图。我将此容器视图连接到UITableViewController,从而将其嵌入到容器视图中。到现在都还好。

现在,当我使用情节提要中的 push segue(我们仍在导航视图中)将此 UITableViewController 连接到新的 UIViewController 时,新的 UIViewController 场景的大小与容器的大小相同看法。我想这是意料之中的,但有什么方法可以避免这种情况发生。我希望其余场景保持正常大小。此外,它在模拟器中运行时工作得非常好并且符合预期。大小问题仅与情节提要有关。

只是解释我的控制器 - 在这里查看层次结构:

UINavigationController 
  -> UIViewController ( Initial View Controller )
    -> Container View 
      -> UITableViewController ( Embed Segue ) 
        -> UIViewController ( Push Segue ) 

有什么方法可以让最后一个UIViewController 和其余连接的控制器场景在情节提要中保持正常大小?

【问题讨论】:

所以问题只是在查看情节提要时?视图控制器有一个“模拟指标”大小选项(默认情况下是推断的)。你试过改变吗? 我遇到了相反的问题。我希望我的 segue 视图适合它所在容器的大小! 【参考方案1】:

这里有一个解决方案:从初始视图控制器创建手动转场到所需的目的地。这将防止故事板混淆并给目的地错误的大小(和其他推断的指标)。不幸的是,因为它是一个手动视图控制器,您必须通过执行以下操作从嵌入式视图控制器的代码中执行 segue:

[self.parentViewController.parentViewController performSegueWithIdentifier:@"MySegue" sender:self];

【讨论】:

【参考方案2】:

从 Xcode 7 开始(我不确定这是否适用于以前的版本):

    选择嵌入在容器视图中的视图控制器。 在Attributes Selector 中,Simulated Metrics 下方的顶部有五个下拉菜单。 将Size 设置为MasterStatus Bar 设置为DefaultTop Bar 设置为Translucent Navigation Bar 现在将UINavigationItem 拖到您的视图控制器上。

这将为您提供大小正确的视图控制器和一个可供编辑的导航栏。

【讨论】:

以上是关于从嵌入在容器视图中的视图控制器中分离的主要内容,如果未能解决你的问题,请参考以下文章

在绘图应用程序中分离模型和视图/控制器

在嵌入在两个独立容器控制器中的视图之间实现委托

从容器视图中的选项卡栏控制器中的视图控制器委派信息

在容器视图中嵌入 NavigationController

从嵌入在 UIContainerView 中的视图调用父视图的方法。迅速

iOS如何获取对带有segue的storyboard容器中嵌入的视图控制器的引用?