tableView有时在两行中显示内容

时间:2015-12-16 20:30:31

标签: ios swift uitableview

我想在我的Viewcontroller中实现一个简单的tableView,但输出不完整。内容有时只能在两行中显示。

经典之物:

  • 课程使用:

    class MealOfWeekView: UIViewController, UITableViewDelegate, UITableViewDataSource  {...}
    
  • 我设置了代理

    override func viewDidLoad() {
       super.viewDidLoad()
       self.tableViewFood.delegate = self
       self.tableViewFood.dataSource = self
       self.tableViewFood.reloadData() 
    }
    
  • 我使用正确的标识符:

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
       let cell = tableView.dequeueReusableCellWithIdentifier("foodIdent", forIndexPath: indexPath) as! FoodTableViewCell
       cell.dayLabel?.text = "\(day[indexPath.row])"
       return cell
    }
    
  • 返回1个部分并返回7行

=>我第一次使用Tab Bar Controller,在我的第一个标签中已经有一个tableView。这个很完美。

tableView显示据我所知星期二,星期六或星期日的日子......不知道信息是否重要:)

修改 所以在我的帮助下,我发现,我的日标是零。

我的FoodTableViewCell

class FoodTableViewCell: UITableViewCell {
 @IBOutlet weak var dayLbl: UILabel!
}

我添加到我的viewDidLoad这一行:

self.tableViewFood.registerClass(FoodTableViewCell.self, forCellReuseIdentifier: "foodIdent")

但它没有用。

如果您需要更多代码,请签名。

谢谢!

看起来像这样: enter image description here

2 个答案:

答案 0 :(得分:0)

您的问题与您的自定义类FoodTableViewCell有关,但我会首先验证以下内容。

  1. 确认标签是使用行索引的星期几设置的。您可以通过设置断点或打印语句(例如创建单元格的位置)来执行此操作。
  2. print(" dayLabel:(cell.dayLabel?.text)")

    print(" day [indexPath.row] :( day [indexPath.row]")

    1. 使用表格视图确认您是registering FoodTableViewCell。

    2. 确认您的子类FoodTableViewCell的dayLabel属性设置正确。尝试更改背景颜色,以便您知道它在UI中显示的最少。

    3. 检查您的UITableViewCell的子类是否覆盖并设置dayLabel以便正确重用。prepareForReuse()

    4. 后台information用于处理表格视图

答案 1 :(得分:0)

<强>解

我找到了答案here

使用标签栏控制器时,您必须使用viewDidAppearviewWillAppear

这条线对我有用:

override func viewWillAppear(animated: Bool) {
    self.tableViewFood.delegate = self
    self.tableViewFood.dataSource = self


    dispatch_async(dispatch_get_main_queue(), {
        self.tableViewFood.reloadData()
    })

}