UIView标签位于UITableviewcontroller Swift顶部

时间:2016-03-08 02:48:24

标签: ios swift uitableview uiview uiscrollview

我正在尝试在滚动时在UITableViewController顶部保留带有标签,segmentedControl和按钮的UIView。我不能将ViewController与UITableView一起使用,因为我的TableViewCells是静态的,其中包含UITextFields。我知道这可以通过ViewController和ContainerViewController完成,但是,这会使需要在视图之间传递的数据量变得复杂。我在swift中寻找一个scrollViewDidScroll解决方案。

这是我到目前为止所拥有的。我已经在故事板中创建了View(也许这是问题的一部分。)labelView通过outlet连接。

    override func scrollViewDidScroll(scrollView: UIScrollView) {
    var rect = self.labelView.frame
    rect.origin.y = min(0,scrollView.contentOffset.y + scrollView.contentInset.top);
    self.labelView.frame = rect;
}

2 个答案:

答案 0 :(得分:0)

如果您只有一个部分,那么您可以尝试在部分标题中添加视图。是的,你必须改变很多东西,但它会100%工作

答案 1 :(得分:0)

我明白了。

首先,我将虚拟空白视图放在我想要的视图中。我做了这个,否则它将自己置于桌面视图之上。我相信你也可以在代码中设置,但这似乎更容易。然后我在tableViewController之外创建了一个单独的视图,并设置了我的标签和按钮。通过插座连接此视图。这是添加视图然后在滚动时保持其位置的代码。

@IBOutlet var labelView: UIView!

override func viewDidLayoutSubviews() {
    self.view.addSubview(labelView)
    labelView.frame.size.width = self.view.frame.size.width
}

override func scrollViewDidScroll(scrollView: UIScrollView) {
    var rect = self.labelView.frame
    rect.origin.y = max(0,scrollView.contentOffset.y + scrollView.contentInset.top)
    self.labelView.frame = rect
}