将TableView添加到.xib中查看swift

时间:2016-07-27 09:33:24

标签: swift uitableview nib

在单击按钮上我有一个.xib视图,我在其中为单元格定义了一个tableView.Here我创建了另一个.xib文件,因为只有选项。我认为没有默认单元格..所以如何在tableview单元格中显示项目。  我已经注册了这样的.Xib并尝试了但我得到了令人惊讶的观点。

class CustomAddOnVC: UIViewController,UITableViewDataSource,UITableViewDelegate {

let items = ["pk","ak","sk"]

override func viewDidLoad() {
    super.viewDidLoad()
}
 func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return items.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let identifier = "Cell"
    var cell: CustomOneCell! = tableView.dequeueReusableCellWithIdentifier(identifier,forIndexPath: indexPath) as? CustomOneCell
    if cell == nil {
        tableView.registerNib(UINib(nibName: "CustomOneCell", bundle: nil), forCellReuseIdentifier: identifier)
        cell = tableView.dequeueReusableCellWithIdentifier(identifier,forIndexPath:indexPath ) as? CustomOneCell
        cell.addOnName.text = items[indexPath.row]
        cell.addOnPrice.text = "£0.0"
    }

    return cell
}

此处计数的项目为3,但数据仅填入第一个。

截图

enter image description here

还有一件事我如何设置视图的高度直到所有项目结束?正如你可以看到物品后的额外空间。如果我减小尺寸和更多的项目来了再次同样的问题。我想根据项目数据动态设置高度

1 个答案:

答案 0 :(得分:1)

我认为这是因为您第一次注册时不会再输入cell == nil了。因此,我的建议是将更新文本移到if语句之外。像这样:

if cell == nil {
    tableView.registerNib(UINib(nibName: "CustomOneCell", bundle: nil), forCellReuseIdentifier: identifier)
    cell = tableView.dequeueReusableCellWithIdentifier(identifier,forIndexPath:indexPath ) as? CustomOneCell
}
cell.addOnName.text = items[indexPath.row]
cell.addOnPrice.text = "£0.0"`