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 中设置初始视图控制器
将视图从storyBoard复制到另一个时xcode卡住了?