Swift uitableview 中的 2 个 nib 加载但不允许交互

Swift 2 nib in uitableview loads but won't allow interaction

我首先构建了一个没有笔尖的普通自定义单元格,它运行良好。但现在我需要在各种视图中重复使用相同的单元格布局,所以我尝试使用笔尖而不是常规原型单元格。 单元格确实显示,里面有信息。但我无法与之互动。例如,我不能在文本字段中写入。当我点击时,它只选择了整个单元格(尽管我在表格视图选项中关闭了单元格的选择)。

我尝试了不同的方法来初始化单元格,但它要么崩溃要么什么都不做。

这是我的代码:

CelluleView(自定义单元格)

class CelluleView: UITableViewCell {

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

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

   override func awakeFromNib() {
     super.awakeFromNib()
   }
}

ViewController

class PersoViewController: UITableViewController {

override func viewDidAppear(animated: Bool) {
   super.viewDidAppear(true)
}

override func viewDidLoad() {
   super.viewDidLoad()

   let nib = UINib(nibName: "CelluleView", bundle: nil)
   tableView.registerNib(nib, forCellReuseIdentifier: "Cellule")

   tableView.dataSource = self
   tableView.delegate = self

   self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 1
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

   let cellule = tableView.dequeueReusableCellWithIdentifier("Cellule", forIndexPath: indexPath) as! CelluleView

   return cellule
}
}

一种解决方案是在 table 视图中启用选择。

将选择样式设置为none

override func awakeFromNib() {
    super.awakeFromNib()
    selectionStyle = UITableViewCellSelectionStyle.None
}

为您的文本字段创建一个插座

@IBOutlet weak var textField: UITextField!

并连接笔尖

然后在单元格中响应选择并设置文本字段成为第一响应者

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    textField.becomeFirstResponder()
}