我正在使用Xcode 10(在Swift 5和iOS 12中使用),并且我的应用当前是这样设置的:
UIViewController
1(登录屏幕)-segue12至-> NavigationController
自动创建的UIViewController
2与UITableView
-segue23 to-> UIViewController
3(有关UITableView
中某项的详细信息,带有自动创建的“后退”按钮) NavigationBar
仅包含“”。
我现在想在UIView
下方添加一个其他UITableView
并带有按钮,但是Xcode不允许我将其拖到UITableView
下方,只能将其中一个拖入UITableView
或直接位于“第一响应者”下方,从而将“视图”置于其自己的窗口之外。
如果我删除“我的表格视图”,它也将不允许我拖动替换项。
如何解决此问题,以便添加新的UIView
+ UIButton
?
答案 0 :(得分:1)
NavigationController自动创建了UIViewController 2
这说明了一切。将导航控制器拖到情节提要中时,得到的是导航控制器及其根视图控制器,而根视图控制器是UITableViewController。
让我们退后一会儿。一个视图控制器可以并且必须仅具有一个主视图。它占据了整个场景。无法调整大小。它不能具有同级视图,因为它没有父级视图作为同级视图的子级。它只能有子级(子视图)。
好吧,在这种情况下,ViewController2是UITableViewController,而MyTableView是ViewController2的主视图。 (始终以这种方式配置表视图控制器,这就是将导航控制器拖到情节提要中时得到的。)这就是为什么您不能向其中添加更多视图的原因,除了作为子视图外,例如原型单元内容。除了内部表格视图之外,您的按钮无处可去。
那该怎么办?
如果要添加的额外界面只是一个按钮,通常的解决方案是将其放入导航栏。它成为表视图控制器的导航项的一部分。
如果您不想这样做-也就是说,如果您确实希望按钮和表格视图在界面中彼此相同,那么您需要用普通视图控制器。现在,其主视图将是普通视图,您可以将所需的任何内容拖到其中,包括表格视图和按钮。您可能会使用容器视图,而不是裸表视图,而将 embed segue 应用于表视图控制器。