【发布时间】:2020-10-03 01:13:27
【问题描述】:
我有一个 ViewController,我有一个表视图,它从结构加载数据,一切都很好。我添加了一个分段控制器,然后创建了 2 个 UIViewContainers。
我将所有 Tableview 代码移至 UIViewContainer 1,而 UIViewContainer 2 当前为空。我还将情节提要中的 TableView 移动到了新的 UIViewContainer 1
在代码 velow UIViewcontainer 1 = tableContainer UIViewController 2 = mapContainer
我已经为分段视图控制器添加了这样的代码:
@IBOutlet weak var mapContainer: UIView!
@IBOutlet weak var tableContainer: UIView!
@IBAction func showContainer(_ sender: UISegmentedControl) {
if sender.selectedSegmentIndex == 0 {
UIView.animate(withDuration: 0.5, animations: {
self.tableContainer.alpha = 1
self.mapContainer.alpha = 0
})
}else {
UIView.animate(withDuration: 0.5, animations: {
self.tableContainer.alpha = 0
self.mapContainer.alpha = 1
})
}
}
这或多或少是我的主视图控制器中唯一的代码。
当我运行时,编译工作正常,但在加载时崩溃并出现以下错误:
*** Terminating app due to uncaught exception
'NSInternalInconsistencyException', reason: 'There are unexpected
subviews in the container view. Perhaps the embed segue has already
fired once or a subview was added programmatically?'
***
我是否错过了我需要对 tableView 或一般视图执行的操作?
【问题讨论】:
-
这听起来像是以错误的方式添加了视图。我可能遗漏了一些东西,但这不足以让我解决这个错误。您是否以编程方式将视图控制器添加到另一个视图控制器中?
-
我使用故事板添加了 2 个容器视图。我创建了 2 个 UIViewController 类型的文件来链接到这些容器,这是我出错的地方吗?当使用带有容器的分段控制器时,我是否需要创建单独的文件来为每个视图放置我的代码?
-
我不完全理解您的设置,但是将 UIViewController 添加到另一个 UIViewController 中很容易做到。您只需要遵循某些准则即可。
-
@JadeReynolds 你的设置有点乱。我猜你没有正确导入你的整个代码。如果 tableview 在 storyboard 中,你没有创建它的 IBOutlet 吗?