我有点问题:
在我的视图中添加了一个tableview,用于显示类别,并在为显示子类别选择类别时添加另一个tableview。但是与顶级单元的交互无法识别,我不明白为什么!如果有人想要解决这个问题,或其他方式使这些动画成为可能..
代码很复杂,但我会尝试清楚解释:
FilterViewController
继承自UIViewController
CategoryFilterViewController
的实例化,并将视图添加到FilterViewController's
视图。CategoryFilterViewController
上,当选择一行时,我实例化新的tableView并将其添加到视图中。CategoryViewController storyboard view
FilterViewController
的一部分,变量和出口
您可以看到我使用SnapKit以编程方式进行一些约束
var contentViewCatHeightContrain: Constraint? = nil
var contentViewCatBottomContrain: Constraint? = nil
@IBOutlet weak var filterTableView: UITableView!
@IBOutlet weak var submitFilterButton: UIButton!
您在此处看到,当选择“类别”行时,我运行此代码。
func displayCat(show: Bool, cell: FilterCell) {
let cellRow = self.filterTableView.indexPathForCell(cell)!
if(cellRow.row == 0) {
if(self.viewModel.categoryContentsView == nil) {
if let vc = self.storyboard?.instantiateViewControllerWithIdentifier("CategoryFilterView") as? CategoryFilterView {
self.viewModel.categoryContentsView = vc
self.viewModel.categoryContentsView.view.frame = CGRectMake(0, self.view.frame.size.height, self.view.frame.size.width, 0)
self.view.addSubview(self.viewModel.categoryContentsView.view)
self.addChildViewController(vc)
self.viewModel.categoryContentsView.view.snp_makeConstraints(closure: { (make) -> Void in
self.contentViewCatHeightContrain = make.height.equalTo(0).constraint
make.left.equalTo(0)
make.right.equalTo(0)
self.contentViewCatBottomContrain = make.bottom.equalTo(0).constraint
})
}
}
self.viewModel.categoryContentsView.view.didMoveToSuperview()
self.view.bringSubviewToFront(self.viewModel.categoryContentsView.view)
}
}
在CategoryViewController
,出口:
@IBOutlet weak var catTableView: UITableView!
@IBOutlet weak var topCatTableView: NSLayoutConstraint!
@IBOutlet weak var subCatHeightContrain: NSLayoutConstraint!
@IBOutlet weak var subCatTableView: UITableView!
并选择行:
func showHideTableView(show: Bool) {
if(show) {
self.topCatTableView.constant = -75
self.subCatHeightContrain.constant = UIScreen.mainScreen().bounds.size.height - 95
}
else {
self.topCatTableView.constant = 0
self.subCatHeightContrain.constant = 0
self.catTableView.reloadData()
}
}
答案 0 :(得分:0)
我终于找到了错误的
CategoryViewController
上的第二个tableView顶部约束不是0值。
我在子tableView上将clipSubviews设置为false,这意味着顶部单元格仍然可见但无法处理任何交互,因为它不在框架内。
感谢大家的回答,这帮助我找到了解决方案