我有一个表格视图,并在其中添加了一个单元格,该单元格在视图的右侧具有标签。
但是当我运行应用程序时,这就是我得到的。 (它正在iPhone 6S上运行):
如您所见,标签被推出了。
这是表视图委托所在的视图控制器的代码:
import UIKit
class TableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
tableView.separatorStyle = .none
let headerViewNibName = UINib(nibName: "HeaderCell", bundle: nil)
tableView.register(headerViewNibName, forCellReuseIdentifier: "headerCell")
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.row == 0 {
let cell = tableView.dequeueReusableCell(withIdentifier: "headerCell", for: indexPath) as! HeaderCell
cell.isUserInteractionEnabled = false
return cell
}
return UITableViewCell()
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.row == 0 {
return 138
}
return 0
}
}
有人可以解释为什么会这样吗?
编辑:
答案 0 :(得分:0)
如果我理解正确,那么您将有一个表格视图,其中有单元格和单元格内的标签。就像您说的那样,您已经针对超级视图指定了标签约束,您必须对单元本身的WRT标签进行约束。如果您正在使用情节提要,则从标签向单元格拖动并添加约束。希望对您有帮助
答案 1 :(得分:0)
随着屏幕尺寸的变化,不应静态设计用户界面。首先,您应该对控制器根视图和表视图进行适当的约束,以使表视图宽度与控制器根视图的宽度匹配。然后使标签的尾随约束不超过单元格的尾随。
答案 2 :(得分:0)
您必须为headerViewNibName
设置框架。并且宽度应等于View
的宽度。
答案 3 :(得分:0)
这可能是由于您的UITableView或UITableViewCell的.xib或表单元格中的Label的约束不正确造成的。因此,请执行以下步骤:
现在将表格单元格框架设置为cellForRow,如下所示:
for (auto& pot : {std::ref(pot1), std::ref(pot2), /*..,*/ std::ref(potn)}) {
if (savePotentiometerState(pot)) {
break;
}
}
答案 4 :(得分:0)
只需在您的手机上拨打layoutIfNeeded
。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.row == 0 {
let cell = tableView.dequeueReusableCell(withIdentifier: "headerCell", for: indexPath) as! HeaderCell
cell.isUserInteractionEnabled = false
cell.layoutIfNeeded()
return cell
}
return UITableViewCell()
}