我一整天都在尝试和研究,但仍未能找到正确的答案。
我有一个按钮,我想在按下按钮时在我的静态UITableView中插入自定义的UITableViewCell。
这就是我所做的。我用自定义的UITableViewCell创建了一个xib文件,并为其分配了swift文件。
在我的tableviewcontroller的viewdidload中,我注册了我的UITableViewCell:
override public func viewDidLoad() {
super.viewDidLoad()
let nib = UINib(nibName: "TableViewCell", bundle: nil)
addContactTableView.registerNib(nib, forCellReuseIdentifier: "cell")
}
这是我按下按钮的功能:
@IBAction func buttonClick(sender: AnyObject) {
if let button = sender as? UIButton {
if let superview = button.superview {
if let cell = superview.superview as? UITableViewCell {
indexPath_g = self.tableView.indexPathForCell(cell)!
}
}
}
print(indexPath_g.row)
addContactTableView.beginUpdates()
addContactTableView.insertRowsAtIndexPaths([
NSIndexPath(forRow: indexPath_g.row, inSection: 1)
], withRowAnimation: .Automatic)
addContactTableView.endUpdates()
}
我的cellForRowAtIndexPath:
public override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath_g) as! TableViewCell
if(indexPath.section == 1) {
//Configure the cell...
cell.detail_field.placeholder = "Phone"
}
return cell
}
我试图运行此操作并且我一直收到此错误:
致命错误:在解包可选值时意外发现nil
答案 0 :(得分:0)
我的第一个猜测是你的cellForRow方法:
public override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath_g) as! TableViewCell
...
}
将 indexPath_g 更改为indexPath
答案 1 :(得分:0)
在按钮操作中插入UITableviewCell。点击按钮时,您可以获取单元格的indexPath并插入UItableview中的任何位置。插入后,添加两个方法 [tableView beginUpdate] 和 [tableView endUpdate] 单元格使用 insertRowsAtIndexPaths 方法。