我有一个有趣的问题。因为我是Swift的新手。
我在TableView上创建并使用Storyboard添加了 CUSTOM CELL 。现在我想添加另一个 CUSTOM CELL 点击第一个 CUSTOM CELL UIButton。
使用XIB创建第二个自定义单元格。现在,当我在 didload 中注册第二个Cell时,我看到空白的tableview,因为第二个自定义单元格为空。
我使用了以下代码:
用于注册第二个小区
self.tableView.registerNib(UINib(nibName: "customCell", bundle: nil), forCellReuseIdentifier: "customCell")
和索引
行的单元格func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! Cell
cell.nameLbl.text = "Hello hello Hello"
let Customcell = tableView.dequeueReusableCellWithIdentifier("customCell", forIndexPath: indexPath) as! customCell
if self.Selected == "YES" {
if self.selectedValue == indexPath.row {
return Customcell
}
return cell
}
else{
return cell
}
}
此处Cell对象用于Storyboard Cell,Customcell用于XIB Second自定义单元格。
请建议我怎么做。
答案 0 :(得分:1)
首先确保你的ViewController是tableView的UITableViewDelegate和UITableViewDataSource,并且你有一个tableView的出口
接下来,您需要在viewDidLoad方法中注册自定义单元格:
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(UINib(nibName: "CustomCell", bundle: nil), forCellReuseIdentifier: "customCell")
}
如果要按下时要修改多个单元格,最简单的方法是保存已选择的单元格数组。这可以是ViewController中的变量:
var customCellIndexPaths: [IndexPath] = []
选择单元格后,您只需将其添加到自定义单元格索引路径数组(如果它还不是自定义单元格),然后重新加载该单元格:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if customCellIndexPaths.contains(indexPath) == false {
customCellIndexPaths.append(indexPath)
tableView.reloadRows(at: [indexPath], with: .automatic)
}
}
在cellForRowAt方法中,我们必须检查是否已选择单元格,如果是,则返回自定义单元格,否则返回正常单元格:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if customCellIndexPaths.contains(indexPath) {
return tableView.dequeueReusableCell(withIdentifier: "customCell")!
}
let cell = UITableViewCell(style: .default, reuseIdentifier: "normalCell")
cell.textLabel?.text = "Regular Cell"
return cell
}
你有它。现在,您应该在选择时接收正常单元格成为CustomCell的平滑动画。