在 UITableviewcontroller Swift 顶部带有标签的 UIView
Posted
技术标签:
【中文标题】在 UITableviewcontroller Swift 顶部带有标签的 UIView【英文标题】:UIView with labels at top of UITableviewcontroller Swift 【发布时间】:2016-03-08 02:48:24 【问题描述】:我试图在 UITableViewController 滚动时保留一个带有标签、segmentedControl 和一个按钮的 UIView。我不能将 ViewController 与 UITableView 一起使用,因为我的 TableViewCells 是静态的,其中包含 UITextFields。我知道这可以通过 ViewController 和 ContainerViewController 来完成,但是,这使得需要在视图之间传递的数据量变得复杂。我正在寻找 swift 中的 scrollViewDidScroll 解决方案。
这是我目前所拥有的。我已经在情节提要中创建了视图(也许这是问题的一部分。) labelView 通过插座连接。
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;
【问题讨论】:
这样的? ***.com/questions/5441938/…(tableHeaderView 作为 tableview 的内置属性) 我想这可行。但是,我的 tableView 目前有 3 个部分,每个部分有 1 行。每个部分都有一个标题。 哦,如果它们是静态的,您可以在额外的单元格中创建视图并覆盖 func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 确保无法选择单元格。 如何将视图始终保留在屏幕顶部的额外单元格中?需要明确的是,我有一个视图,无论我在 tableview 屏幕上的哪个部分,我都想保持在屏幕的停止位置。 【参考方案1】:我想通了。
首先,我在我想要的视图位置放置了一个虚拟空白视图。我这样做了,否则它会将自己设置在 tableview 的顶部。我相信您也可以在代码中设置偏移,但这似乎更容易。然后,我在 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
【讨论】:
【参考方案2】:如果您只有一个部分,那么您可以尝试在部分标题中添加视图。是的,你必须改变很多东西,但它会 100% 工作
【讨论】:
出于功能原因,我需要有多个部分。对于导航栏下方的所有部分,我基本上都需要一个标题视图。 如果您正在使用情节提要,那么您只需将 UIView 拖到原型单元格上方即可为您工作。你可以做任何你想做的事。如果你不想滚动视图和 tableview 以编程方式添加并设置 tableview 的内容偏移量就在视图的下方 这不起作用,除非你在代码中添加 subView。 你试过我在用吗,不需要在代码中添加为子视图,但肯定会和uitableview一起滚动 如果你希望它在上面是静态的,我个人更喜欢使用 UIViewController 而不是 UITableviewController以上是关于在 UITableviewcontroller Swift 顶部带有标签的 UIView的主要内容,如果未能解决你的问题,请参考以下文章
在 UIScrollView 内的 UITableViewController 的 UITableViewCell 右侧看不到控件
在 uiviewcontroller 中添加 uitableviewcontroller 作为子视图时出错
UITableViewController 作为 ChildViewController 不调用委托方法
UITableViewController headerview 无法正确显示
将 UITableViewController 推送到导航堆栈时看不到导航栏
将 UITableViewController 推送到 [self navigationController] 会导致 EXC_BAD_ACCESS