Xcode故事板:无法将View添加到ViewController

时间:2019-04-16 10:19:21

标签: ios xcode uiview uiviewcontroller xcode-storyboard

我正在使用Xcode 10(在Swift 5和iOS 12中使用),并且我的应用当前是这样设置的:

  1. UIViewController 1(登录屏幕)-segue12至->
  2. NavigationController自动创建的
  3. UIViewController 2与UITableView-segue23 to->
  4. UIViewController 3(有关UITableView中某项的详细信息,带有自动创建的“后退”按钮)

enter image description here

NavigationBar仅包含“”。

我现在想在UIView下方添加一个其他UITableView并带有按钮,但是Xcode不允许我将其拖到UITableView下方,只能将其中一个拖入UITableView或直接位于“第一响应者”下方,从而将“视图”置于其自己的窗口之外。

如果我删除“我的表格视图”,它也将不允许我拖动替换项。

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

1 个答案:

答案 0 :(得分:1)

  

NavigationController自动创建了UIViewController 2

这说明了一切。将导航控制器拖到情节提要中时,得到的是导航控制器及其根视图控制器,而根视图控制器是UITableViewController。

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

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

那该怎么办?

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

  • 如果您不想这样做-也就是说,如果您确实希望按钮和表格视图在界面中彼此相同,那么您需要用普通视图控制器。现在,其主视图将是普通视图,您可以将所需的任何内容拖到其中,包括表格视图和按钮。您可能会使用容器视图,而不是裸表视图,而将 embed segue 应用于表视图控制器。