【发布时间】:2016-07-02 14:44:50
【问题描述】:
我试过在 SO 上搜索这个,但没有找到适合我情况的东西。
这是我的层次结构和我正在尝试做的事情:
// -> view
// -> -> myLabel //I'd like to have this match center.x with...
// -> -> tableView
// -> -> -> tableViewCell
// -> -> -> -> UIStackView
// -> -> -> -> -> mySwitch //...this, before everything appears
关于如何实现这一点的任何建议?非常感谢所有帮助。谢谢!
编辑:此代码适用于定位,但在出现之前不会运行。它在必须加载/重用单元格时运行,因此它首先出现在错误的位置:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCellWithIdentifier("myCell") as? myCell {
cell.configureCell(myArray[indexPath.row])
let centerPoint = cell.mySwitch.convertPoint(cell.mySwitch.center, toView: self.view)
myLabel.center.x = centerPoint.x - (myLabel.frame.width / 2)
return cell
} else {
return myCell()
}
}
【问题讨论】:
-
是的,它是在 myCell.swift 中编程的(我正在使用的 tableViewCell 子类的控制器)
-
你知道Switch在单元格内的位置吗?
-
是的,对不起,我忘了提:我能够获得开关的全局位置,但我不知道在哪里实现更改标签位置的代码,所以它发生在事情出现之前.我会用我发现可以工作的代码更新我的问题,加上我在层次结构中遗漏的堆栈视图,以防万一
-
@SeanC.Li 如果您事先知道 Switch 的位置,您可以使用自动布局来设置标签的位置,以便在视图实际出现之前,所有内容都会正确显示在适当的位置。您不应该将 Label 紧贴到 Switch,因为单元格由 TableView 处理并被回收,并在与屏幕中其他视图不同的时间出现和消失。
-
我想要做的是让我的表格根据屏幕大小动态改变宽度。那部分有效。表格中的每个单元格都有一个开关(使用自动布局定位相同),我只想在顶部给开关一个标题,以便用户知道他们在做什么。我不介意每次出现单元格时都运行代码,如果需要的话。
标签: ios swift uitableview uiview