【问题标题】:Not able to display anything on table view Swift无法在表格视图 Swift 上显示任何内容
【发布时间】:2016-01-16 00:53:34
【问题描述】:

这是我的历史视图,我在视图控制器中有一个表格视图。但由于某种原因,我无法输出任何内容,我正在尝试对其进行硬编码,但它根本不显示任何内容。我知道的一件事是我需要让 tableView 函数覆盖,如果我这样做,我会出错。

  import UIKit

    class History: UIViewController, UITableViewDataSource, UITableViewDelegate
    {

    @IBOutlet var tableView: UITableView!

    override func viewDidLoad()
    {
        super.viewDidLoad()

        tableView.delegate = self
        tableView.dataSource = self

        self.view.backgroundColor = UIColor(patternImage: UIImage(named: "newBackground.jpg")!)
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 1
    }


    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

     func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    {
        let cell = tableView.dequeueReusableCellWithIdentifier("historyCell", forIndexPath: indexPath) as! historyCell

        cell.durationLabel.text = "98"

        return cell
    }


    override func viewWillAppear(animated: Bool)
    {
        super.viewWillAppear(animated)

    }

}

这是我的单元原型类,我确保标识符也是“historyCell”

public class historyCell: UITableViewCell{
    @IBOutlet var durationLabel: UILabel!
    @IBOutlet var kicksLabel: UILabel!

}

【问题讨论】:

  • 覆盖时遇到哪个错误?

标签: iphone swift uikit overriding tableview


【解决方案1】:

您是如何将原型单元的控件连接到 historyCell 类中的 IBOutlets 的?当您不使用 UITableviewController 时,我不知道这是可能的。我一直在使用标签。

除非有我不知道的新内容,否则您对 cell.durationLabel.text 的分配应该会导致 nil 展开(这是您遇到的错误吗?)

【讨论】:

  • 是的,这就是我以前遇到的错误,我会遇到零展开。我想我现在可以显示它了,但是它只在我旋转屏幕后才显示我的标签,很奇怪......你的意思是我如何连接它? @IBOutlet var durationLabel:UILabel!
  • 您刚刚确认了我在阅读您的问题时所怀疑的一些事情。当我开始使用 UITableViews 时,我可以访问自定义单元格控件的唯一方法是通过 findViewWithTag。在 3 个版本的 XCode 之后,我再也没有回去寻找更好的方法。你让我意识到有一种方法可以以某种方式将表格视图单元格连接到 IBOutlets。我要检查一下,可能会消除很多代码。我喜欢消除代码。谢谢。
  • 当您旋转屏幕时,会重新绘制,并且可能会重新调用 cellForRowAtIndexPath。您是否检查了在视图最初出现时至少调用了一次 cellForRowAtIndexPath ?如果它没有被调用,那意味着表格视图认为设计时的原型单元格可以按原样使用(这确实很奇怪)。如果它被调用,那么我需要在 UITableViewCells 中的 IBOutlets 上做功课,然后才能假装有帮助。
  • 当我们仍然需要显式调用 tableView.reload() 时,我的 tableviews 被编程(现在设置委托应该处理所有事情)。也许仍然存在需要调用 .reload() 的情况。我建议这样做。至少它应该强制 tableview 重绘单元格。
  • 我也很难过。只有最后一件事。您为视图设置的背景颜色是否可能太暗以至于您看不到实际上正确显示的单元格内容?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-22
相关资源
最近更新 更多