TableViewController与swift中的自定义单元格

时间:2014-08-15 09:05:59

标签: ios uitableview swift

我在Swift中遇到自定义TableViewCell的问题。我试图在TableViewCell中展示自定义TableView,但效果不佳。屏幕上有一个灰色方块......我在互联网上找到了一些建议禁用自动布局的答案。我做了但现在,我的细胞显示但是细胞的高度混乱。正如您所看到的,应该具有红色背景的单元格显示在3个单元格的高度上,而背景仅在1个单元格上显示。单元格的高度和行高都设置为150px。

           With Auto-Layout:                   Without Auto-Layout:

enter image description here enter image description here

这是Cell代码:

class CharacterDescription : UITableViewCell {
    @IBOutlet var imageProfile: UIImageView!
    @IBOutlet var name: UILabel!
    @IBOutlet var hp: UILabel!
    @IBOutlet var damages: UILabel!
    @IBOutlet var range: UILabel!
    @IBOutlet var mp: UILabel!
    @IBOutlet var critChances: UILabel!
    @IBOutlet var critModifier: UILabel!

    required init(coder aDecoder: NSCoder!) {
        super.init(coder: aDecoder)
    }

    override init(style: UITableViewCellStyle, reuseIdentifier: String!) {
        super.init(style: UITableViewCellStyle.Value1, reuseIdentifier: reuseIdentifier)
    }
}

TableViewController代码:

class CharacterDescriptionsViewController : UITableViewController, UITableViewDataSource, UITableViewDelegate {
    var userProfile: UserProfile!

    required init(coder aDecoder: NSCoder!) {
        super.init(coder: aDecoder)
    }

    override init() {
        super.init()
    }

    override func viewDidLoad() {
        var nibName = UINib(nibName: "CharacterDescription", bundle:nil)

        self.tableView.registerNib(nibName, forCellReuseIdentifier: "CharacterDescription")
    }

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

    override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int {
        return userProfile.characters!.count
    }


    override func tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell? {
        var cell = self.tableView.dequeueReusableCellWithIdentifier("CharacterDescription", forIndexPath: indexPath) as CharacterDescription

        //!TODO: Init of cell
        return cell
    }
}

1 个答案:

答案 0 :(得分:2)

您必须覆盖TableView.heightForRowAtIndexPath才能返回自定义单元格的高度。