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

时间:2015-10-21 23:09:05

标签: uitableview swift2 nib

我首先构建了一个没有笔尖的普通自定义单元格,它工作得很好。但是现在我需要在各种视图中重用相同的单元格布局,因此我尝试使用nib代替常规原型单元。 单元格显示,内部有信息。但我无法与之互动。例如,我无法在文本字段中书写。当我点击时,它只选择整个单元格(虽然我关闭了tableview选项中单元格的选择)。

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

这是我的代码:

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
}
}

1 个答案:

答案 0 :(得分:2)

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

将选择样式设置为无

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()
}