自定义单元格在TableView中显示不正确

时间:2014-07-18 12:23:10

标签: ios interface swift

我正在尝试将自定义单元格添加到主 - 详细信息应用程序中。我通过使用界面构建器创建了一个xib来创建自定义单元格。应用程序加载,我可以使用"添加按钮"添加项目。但是单元格显示不正确,我不知道问题可能在哪里。

感谢您的任何意见!

主视图控制器:

import UIKit

class MasterViewController: UITableViewController {

    var objects = NSMutableArray()


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

    override func viewDidLoad() {
        super.viewDidLoad()

        var nipName=UINib(nibName: "FeedTableCell", bundle:nil)
        self.tableView.registerNib(nipName, forCellReuseIdentifier: "cell")

        // Do any additional setup after loading the view, typically from a nib.
        self.navigationItem.leftBarButtonItem = self.editButtonItem()

        let addButton = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "insertNewObject:")
        self.navigationItem.rightBarButtonItem = addButton
    }

    func insertNewObject(sender: AnyObject) {
        if objects == nil {
            objects = NSMutableArray()
        }
        objects.insertObject(NSDate.date(), atIndex: 0)
        let indexPath = NSIndexPath(forRow: 0, inSection: 0)
        self.tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        var  cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as FeedTableCell

        cell.loadItem(user:"user1", hoop: "#Yolo", post: "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magn")

        return cell
    }

    override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
        // Return false if you do not want the specified item to be editable.
        return true
    }

    override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
        if editingStyle == .Delete {
            objects.removeObjectAtIndex(indexPath.row)
            tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
        } else if editingStyle == .Insert {
            // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
        }
    }
}

与自定义单元格关联的类:

    import UIKit

class FeedTableCell : UITableViewCell{

    @IBOutlet var userLabel: UILabel
    @IBOutlet var hoopLabel: UILabel
    @IBOutlet var postLabel: UILabel

    func loadItem(#user: String, hoop: String, post: String) {
        userLabel.text = user
        hoopLabel.text = hoop
        postLabel.text = post
    }

}

界面构建器中的自定义单元格 Custom cell

"添加"是第一次按下 + klicked first time

"添加"多次按下 + klicked 3 times

1 个答案:

答案 0 :(得分:1)

你所看到的是一堆都是高度为0的细胞,细胞分离器全部相互挤压 - 这就形成了灰色视图。在iOS8中,单元格高度将根据您的自动布局约束自动计算。

确保将所有子视图固定到内容视图的边缘,以便单元格知道它应该有多高。

这里有一个例子:http://www.raywenderlich.com/73602/dynamic-table-view-cell-height-auto-layout