自定义UITableView单元格Nib文件仅在选择单元格后显示



当我加载应用程序时,就会发生这种情况。由于某些原因,表视图加载为空。只有当我选择单元格并单击另一个单元格时,以前选择的单元格才会显示出来。但对于第一个单元格,无论我在哪里/如何单击,我仍然看不到第一个单元格。

我不明白为什么会发生这种事。很明显,我做错了什么,如果有人能告诉我为什么会发生这种事,我将不胜感激;如何修复。

在主情节提要中,我使用了tableViewController SummaryTableViewController和自定义UITableViewCell DayOfWeekTableViewCell。我有一个名为DayofWeekSpendingTableViewCell.xib的表视图单元格的nib文件。这是我所有文件及其文件名的列表。

这是我的SummaryTableViewController代码:

class SummaryTableViewController: UITableViewController {
    var dayOfWeek: [String] = [String]()
    var totalSpentPerDay: [Double] = [Double]()
    override func viewDidLoad() {
        super.viewDidLoad()
        dayOfWeek = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
        totalSpentPerDay = [0, 7.27, 0, 0, 39, 0, 0]
    }
    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.dayOfWeek.count
    }
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        var cell = tableView.dequeueReusableCellWithIdentifier("summaryCell", forIndexPath: indexPath) as! DayOfWeekTableViewCell
        // Configure the cell...
        let nib = NSBundle.mainBundle().loadNibNamed("DayofWeekSpendingTableViewCell", owner: self, options: nil)
        cell = nib[0] as! DayOfWeekTableViewCell
        cell.dayOfWeek.text = dayOfWeek[indexPath.row]
        cell.totalAmountSpent.text = String(totalSpentPerDay[indexPath.row])
        return cell
    }
}

这是我的自定义单元格DayOfWeekTableViewCell代码:

class DayOfWeekTableViewCell: UITableViewCell {
    @IBOutlet weak var dayOfWeek: UILabel!
    @IBOutlet weak var totalAmountSpent: UILabel!
    override func awakeFromNib() {
        super.awakeFromNib()
    }
    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
    }
}

在主故事板中,我。。。

  • 将自定义单元格DayOfWeekTableViewCell连接到情节提要单元格
  • 将故事板单元标识为summaryCell

在笔尖文件DayofWeekSpendingTableViewCell.xib中,我。。。

  • 将我的笔尖文件连接到自定义单元格DayOfWeekTableViewCell
  • 将我的笔尖文件标识为nibCell
  • 将我的笔尖文件中的出口连接到自定义单元格DayOfWeekTableViewCell

不是在cellForRowAtIndexPath中加载NIB,而是在viewDidLoad()中加载NIB-并注册它以与表视图一起使用

override func viewDidLoad() {
    super.viewDidLoad()
    dayOfWeek = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
    totalSpentPerDay = [0, 7.27, 0, 0, 39, 0, 0]
    // Create a nib for reusing
    let nib = UINib(nibName: "DayofWeekSpendingTableViewCell", bundle: nil)
    tableView.registerNib(nib, forCellReuseIdentifier: "summaryCell")
}

然后您可以直接访问cellForRowAtIndexPath:中的单元格

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    // Configure the cell...
    let cell = tableView.dequeueReusableCellWithIdentifier("summaryCell", forIndexPath: indexPath) as! DayOfWeekTableViewCell
    cell.dayOfWeek.text = dayOfWeek[indexPath.row]
    cell.totalAmountSpent.text = String(totalSpentPerDay[indexPath.row])
    return cell
}

相关内容

  • 没有找到相关文章

最新更新