我想在UITableViewCell
内设置一个UITextView。
在TableView函数的一些方法中,我编写了下面的代码,
但是它会导致以下错误:
由于未捕获的异常'NSGenericException'而终止应用, 原因:'无法使用锚点激活约束 和 因为他们 没有共同的祖先。约束或其锚点是否引用 不同视图层次结构中的项目?这是非法的。'
这是我在tableView中的代码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = newTableView.dequeueReusableCell(withIdentifier: "NewCell", for: indexPath) as! NewCellTableViewCell
let tableTextView = UITextView()
tableTextView.translatesAutoresizingMaskIntoConstraints = false
tableTextView.leadingAnchor.constraint(equalTo: cell.leadingAnchor).isActive = true
tableTextView.topAnchor.constraint(equalTo: cell.topAnchor).isActive = true
tableTextView.widthAnchor.constraint(equalTo: cell.widthAnchor).isActive = true
tableTextView.heightAnchor.constraint(equalTo: cell.heightAnchor).isActive = true
cell.addSubview(tableTextView)
return cell
}
答案 0 :(得分:1)
首先你应该打电话:
cell.addSubview(tableTextView)
然后附加约束,而且:
所有约束必须仅涉及范围内的视图 接收视图。具体而言,所涉及的任何观点都必须是 接收视图本身或接收视图的子视图。
所以你的代码可能是:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = newTableView.dequeueReusableCell(withIdentifier: "NewCell", for: indexPath) as! NewCellTableViewCell
let tableTextView = UITextView()
cell.addSubView(tableTextView)
tableTextView.translatesAutoresizingMaskIntoConstraints = false
tableTextView.leadingAnchor.constraint(equalTo: cell.leadingAnchor).isActive = true
tableTextView.topAnchor.constraint(equalTo: cell.topAnchor).isActive = true
tableTextView.widthAnchor.constraint(equalTo: cell.widthAnchor).isActive = true
tableTextView.heightAnchor.constraint(equalTo: cell.heightAnchor).isActive = true
return cell
}
答案 1 :(得分:0)
在应用约束之前,必须将子视图添加到超级视图中:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = newTableView.dequeueReusableCell(withIdentifier: "NewCell", for: indexPath) as! NewCellTableViewCell
let tableTextView = UITextView()
tableTextView.translatesAutoresizingMaskIntoConstraints = false
cell.addSubView(tableTextView)
tableTextView.leadingAnchor.constraint(equalTo: cell.leadingAnchor).isActive = true
tableTextView.topAnchor.constraint(equalTo: cell.topAnchor).isActive = true
tableTextView.widthAnchor.constraint(equalTo: cell.widthAnchor).isActive = true
tableTextView.heightAnchor.constraint(equalTo: cell.heightAnchor).isActive = true
return cell
}