【问题标题】:Swift TableView PopulationSwift TableView 人口
【发布时间】:2020-02-07 08:34:47
【问题描述】:

我有一个 tableview 控制器,我正在使用 Storyboard 进行设计。原型单元非常基本,它只有两个标签。名称标签和日期标签。

当我运行我的程序时,样式就在那里(字体等),但似乎约束不起作用?此外,不显示单元格颜色(仅显示表格视图背景),并且缺少单元格分隔符。标签相互重叠,当我将单元格高度设置为 75 时,它看起来并不那么高。

这是我的单元格编译后的样子: See tableview here

我为表格视图单元格制作了一个模型,如下所示(IdeaCell 在情节提要的原型单元格上正确设置):

class IdeaCell: UITableViewCell {

    @IBOutlet weak var ideaNameLbl: UILabel!
    @IBOutlet weak var ideaDateLbl: UILabel!


    override func awakeFromNib() {
        super.awakeFromNib()
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
        if selected {
            self.layer.backgroundColor = UIColor(white: 1, alpha: 0.2).cgColor
        } else {
            self.layer.backgroundColor = UIColor.clear.cgColor
        }
    }

    func configureCell(idea : CoreIdea) {
        let name = idea.name
        ideaNameLbl.text = name

        let date = idea.date
        ideaDateLbl.text = date
    }
}

我的tableview视图控制器相关代码在这里(重用标识符(ideaCell)在情节提要的原型单元上正确设置):

class IdeaVC: UITableViewController { 
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        if let cell = tableView.dequeueReusableCell(withIdentifier: "ideaCell", for: indexPath) as? IdeaCell {
            let idea = ideas[indexPath.row]
            cell.configureCell(idea: idea)
            return cell
        } else {
            return UITableViewCell()
        }
    }
}

更新: 添加 heightForRowAt 函数后,我的单元格是正确的高度,并且约束正常工作。由于某种原因,单元格背景颜色丢失,并且单元格分隔符没有出现(字体和字体颜色有效)。它们都设置在故事板中。

这是我的单元格的屏幕截图: missing cell style

更新 2: 我这样设置分隔线和背景:

self.tableView.backgroundColor = UIColor.black
self.tableview.separatorColor = UIColor.white

希望这对某人有所帮助!老实说,我不知道为什么故事板中的值不起作用,但是将它们设置在 viewDidLoad 中效果很好。

【问题讨论】:

    标签: ios swift uitableview model storyboard


    【解决方案1】:

    你有没有告诉你的tableview tableviewcell 的高度?如果不试试这个。它是您的 tableviews 委托方法之一。

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 75.0 //Set your cell height that you want to appear in your tableview
    }
    

    【讨论】:

    • 谢谢。我今晚回家时会试试看。我的印象是我不需要那个方法,因为我在情节提要中设置了高度?
    • 试试看它是否有效,让我知道它对你有什么作用:P
    • 更新:它有效!大多!单元格现在得到适当的约束。它没有显示单元格背景颜色或单元格之间的线分隔符。我将深入研究文档,因为我认为还有其他方法可以帮助解决这些问题。谢谢!
    • 您可以发布您的单元格的新屏幕截图吗?剩下的我可以帮你。
    • 我刚刚用最近的屏幕截图更新了我的问题。非常感谢!
    【解决方案2】:

    我认为您必须在函数处覆盖 Item 的数量和行的高度。并在名称和日期标签之间设置 UITableViewCell 的约束。

    【讨论】:

    • 我目前有这些限制:name = top 0, left 0, right 0 and date = bottom 0, left 0, right 0。我将在函数处添加行的高度,看看如何那行得通。我还将在名称和日期之间添加一个约束。在这种情况下,改变项目数量会做什么?我将项目数设置为数组中的项目数(已正确填充)。
    猜你喜欢
    • 2017-06-29
    • 2021-08-23
    • 2014-11-14
    • 2018-07-03
    • 2018-08-21
    • 2019-03-15
    • 2016-05-23
    • 2018-03-30
    • 1970-01-01
    相关资源
    最近更新 更多