在单击按钮上我有一个.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,但数据仅填入第一个。
截图
还有一件事我如何设置视图的高度直到所有项目结束?正如你可以看到物品后的额外空间。如果我减小尺寸和更多的项目来了再次同样的问题。我想根据项目数据动态设置高度
答案 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"`