UIModalPresentationStyle.PageSheet不显示ViewController内容

时间:2014-11-06 17:16:52

标签: swift uiviewcontroller ios8 presentviewcontroller uimodalpresentationstyle

我目前有一个在PresentationStyle.PageSheet中以模态方式呈现VC的segue。我已经以编程方式和故事板完成了这个。我用两种方法得到相同的结果,模态弹出自身但不显示来自VC的UIView内的任何内容。它只显示视图的背景颜色,这就是全部。我还想指出,如果我执行默认模式segue(全屏)但是使用页面表格样式或使用UIPopoverController失败,则会显示所有内容。以下是一些显示我正在谈论的屏幕截图。

这就是故事板中的样子: storyboard

这就是它在模拟器和实际ipad中的样子: enter image description here

以下是我的编码方法:

@IBAction func addPickUp(){
    var addPickupVC = self.storyboard?.instantiateViewControllerWithIdentifier("pickup") as AddPickupViewController
    addPickupVC.modalPresentationStyle = UIModalPresentationStyle.PageSheet
    self.presentViewController(addPickupVC, animated: true, completion: nil)
}

这是用ipad ios8快速写的。 我在这里错过了什么?任何有建设性的反馈都值得赞赏!

编辑:以下是以模态方式呈现的VC的文档大纲。 outline

2 个答案:

答案 0 :(得分:3)

您提供弹出窗口的代码是正确的 可能是AutoLayout约束存在问题 正如您所看到的那样,您的popover已经显示但缺少标签。

  1. 删除AutoLayout(它们将自动生成)并查看标签是否现在可见
  2. 尝试添加新标签。拖放它,并且不指定任何约束
  3. 调试视图

    • 单击调试面板上的“调试视图层次结构”按钮
      enter image description here

    • 现在你可以看到你的观点。选择您的标签,如果它存在并看到它的限制
      enter image description here

  4. 检查您的AutoLayout约束,并且标签出现在正确的Size Classes中 UI设计器显示大小类。就我而言,它是(Any Any) 这意味着它适用于所有尺寸和所有设备 还要检查在运行时是否删除了约束 你可以在右侧的检查员身上看到它
    enter image description here

答案 1 :(得分:0)

在故事板中,您可以简单地控制从按钮到您呈现的Viewcontroller的连接拖动。没有理由为此提供@IBAction。如果使用InterfaceBuilder方法,您可以选择将segue上的表示样式设置为PageSheet。