UITableViewController 中的部分标题和表格视图单元格的问题

Posted

技术标签:

【中文标题】UITableViewController 中的部分标题和表格视图单元格的问题【英文标题】:Issue with section header and table view cell in UITableViewController 【发布时间】:2016-11-29 13:30:47 【问题描述】:

我做了一个使用 UITableviewController 而不是滚动视图创建屏幕的实验,原因是屏幕中的字段可能会发生巨大变化,这就是我这样做的原因

屏幕:

所有这些单元格都是静态单元格。

部分标题代码

let backgroundImage = UIImage(named: "main_bg")
    let imageView = UIImageView(image: backgroundImage)
    self.tableView.backgroundView = imageView

    header.backgroundColor = UIColor.clear
    let lblheader : appLabel = appLabel(frame: CGRect(x: 0, y: 20, width: UIScreen.main.bounds.width, height: header.frame.height - 20))
    lblheader.text = "SIGN UP"
    lblheader.textFontsize = 14
    lblheader.textFontType = 2
    lblheader.textFontColor = 1
    lblheader.textAlignment = .center
    header.addSubview(lblheader)

    let btnback : appButton = appButton(frame: CGRect(x: 0, y: lblheader.frame.origin.y, width: 50, height: lblheader.frame.height))
    btnback.backgroundColor = UIColor.clear
    btnback.setImage(UIImage(named: "back_arrow"), for: .normal)
    btnback.addTarget(self, action: #selector(self.btnBackTapped), for: .touchUpInside)
    header.addSubview(btnback)

现在当我滚动表格时,它看起来如下:

我想滚动标题部分下表格的静态单元格。 我知道我也可以使用 UIViewController 的组合,它包含 Container 并代表 Table view 控制器(参考:See this i used it already) 如果有除此之外的任何解决方案。 请指导我!

谢谢

【问题讨论】:

您需要一个标题,不要添加 UIView 并将 tableView 放在其下。很简单;) 【参考方案1】:

或者,您可以使用 UITableView 的 tableHeaderView 而不是 UITableView's viewForHeaderInSection,因为节标题 WILL 始终会粘在 tableview 的顶部,除非您进行一些简单的修改

如果您使 SectionHeader 不透明而不是透明/半透明,您就会明白。尝试制作一个自定义项目(测试项目),在其中创建一个 TableView,其中包含许多具有不同标题的部分

不创建示例项目的完美示例是 iPhone 中的 Phone 应用程序(绿色应用程序),其中 Letters 是部分标题,滚动时它们会粘在屏幕顶部

这是 Swift 2.3

中的示例
let someHeader = NSBundle.mainBundle().loadNibNamed("", owner:self, options nil!)!.first as! SomeView

//this is not a real function just what you wanna do stuff
someHeader.customizeIfNeeded ... yadda yadda set frame assign values add targets etc


tableView.tableHeaderView = someHeader
tableView.reloadData()

【讨论】:

【参考方案2】:

使用UIViewController而不是UITableViewController并在tableView顶部添加一个UIView作为标题

参考这个maintain the header of a tableView fixed

只是一个简单的方法,希望这会有所帮助

如果您必须使用“UITableViewController”,请查看以下解决方案

UITableViewController (static cells/keyboard handling) and have a fixed header

【讨论】:

以上是关于UITableViewController 中的部分标题和表格视图单元格的问题的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewController 中的 UISearchBar?

UITableViewController 中的 iAd

UITableViewController 中的 iOS tableHeaderView 从不显示

UITableViewController 中的顶栏背景

框架中的 UITableViewController 未调用 didSelectRowAtIndexPath

从 UITableViewController 中的按钮创建操作