Xcode Storyboard:无法将视图添加到 ViewController

Posted

技术标签:

【中文标题】Xcode Storyboard:无法将视图添加到 ViewController【英文标题】:Xcode Storyboard: Can't add View to ViewController 【发布时间】:2019-04-16 10:19:21 【问题描述】:

我正在使用 Xcode 10(带有 Swift 5 和 ios 12),我的应用程序当前设置如下:

    UIViewController 1(登录屏幕) - segue12 到 -> NavigationController 自动创建的 UIViewController 2 和 UITableView - segue23 到 -> UIViewController 3 (UITableView 中带有自动创建的“返回”按钮的项目的详细信息)

NavigationBar 只包含一个“ ”。

我现在想在UITableView 下方添加另一个带有按钮的UIView,但Xcode 不允许我将其拖到UITableView 下方,只能拖到UITableView 中或直接在“First Responder”下方,它将 View 放到它自己的窗口中。

如果我删除“我的表格视图”,它也不会让我拖动替换。

如何解决这个问题,以便添加新的UIView + UIButton

【问题讨论】:

您是否将 tableView 的角区域向上拖动以获得间距,然后在其下拖动 UIView?看起来你的 tableview 的约束覆盖了整个屏幕,也许这是个问题。 @ImrulKayes 它不允许我这样做。如果我单击左侧列表中的“我的表格视图”,它会在右侧变为蓝色,但您用于调整大小的小方块不见了。我也不能为它添加任何约束,选项是灰色的。 【参考方案1】:

自动创建 UIViewController 2的NavigationController

这就解释了一切。当你将一个导航控制器拖入故事板时,你得到的是一个导航控制器和它的根视图控制器,而根视图控制器是一个 UITableViewController。

让我们退后一步。一个视图控制器可以而且必须只有一个主视图。它占据了整个场景。它无法调整大小。它不能有兄弟视图,因为它没有父视图作为兄弟视图的子视图。它只能有子视图(子视图)。

好吧,在这种情况下,ViewController2 是一个 UITableViewController,而 MyTableView 是 ViewController2 的主视图。 (表格视图控制器始终以这种方式配置,这就是您将导航控制器拖入情节提要时得到的结果。)这就是为什么您不能向其添加更多视图的原因,除了子视图,例如原型单元格内容。除了 inside 表格视图之外,您的按钮无处可去。

那么,该怎么办?

如果你要添加的额外界面只是一个按钮,通常的解决方案是把它放到导航栏中。它成为表格视图控制器导航项的一部分。

如果你不想这样做——也就是说,如果你真的希望按钮和表格视图在界面中成为彼此的兄弟——那么你需要将 ViewController2 本身替换为 普通视图控制器。现在它的主视图将是一个普通的视图,你可以将任何你喜欢的东西拖进去,包括一个表格视图和一个按钮。更有可能的是,您将使用 container view 代替裸表视图,并将 embed segue 嵌入到表视图控制器中。

【讨论】:

知道了,谢谢!我想在屏幕底部添加一个“保存”按钮。要添加不带 TableViewController 的 NavigationController,只需添加 ViewController,单击 View Controller Scene 项目,然后在顶部栏中:Editor - Embed in - Navigation Controller。之后,一切都可以(几乎)像以前一样设置 - 重要:要在运行时填写表格,请使用 class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate 而不是 class ViewController: UITableViewController!如果只有一个表格和一个按钮,为什么还要使用 ContainerView?

以上是关于Xcode Storyboard:无法将视图添加到 ViewController的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Xcode 6 的新 Storyboard 中设置初始视图控制器

Xcode Storyboard 中不提供容器视图

将视图从storyBoard复制到另一个时xcode卡住了?

使用 StoryBoard 在 Xcode 中命名多个视图

无法将 OUTLET 从 Storyboard 导入到 ViewController

无法在 Xcode Storyboard 中为 ViewControllers 选择自定义类