我正在使用表格视图制作待办事项计划程序。当用户在输入任务后按Enter键时,任务左侧会出现一个按钮。
我的ViewController类中的textFieldShouldReturn方法添加了按钮,但并不总是在屏幕的左上角。我把它设置成这样:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell")! as! TextInputTableViewCell
self.view.addSubview(cell.cellButton) // puts a button in a wrong location, button doesn't respond to any action
cell.addSubview(cell.cellButton)
tableViewData.append(textField.text!)
lastItem = tableViewData.count
print(tableViewData)
print(lastItem)
self.tableView.reloadData() //update row count and array count
textField.resignFirstResponder()
return true
}
self.view.addSubview(cell.cellButton)
在视图中添加了一个按钮,但按钮没有出现在正确的位置,(我尝试使用故事板移动位置,但它没有做任何事情)。此外,该按钮不会响应其在子类中声明的相应单击操作。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = self.tableView.dequeueReusableCell(withIdentifier: "cell")! as! TextInputTableViewCell
cell.textField.delegate = self
...
return cell
}
感谢任何帮助。如果我不太清楚,请告诉我
答案 0 :(得分:1)
你没有在这一行中抓住正确的单元格:
let cell = tableView.dequeueReusableCell(withIdentifier: "cell")! as! TextInputTableViewCell
你基本上告诉系统只给你一个单元格。您需要确定实际返回的文本字段,并抓取包含该文本字段的单元格,然后将子视图添加到右侧单元格。这样做的方法是使用行号标记textFields。
它适用于第一个示例,因为您位于cellForRow中,因此您拥有正确的单元格。
答案 1 :(得分:0)
如果您将.xib或storyboard文件中的按钮对齐,然后将其隐藏起来直到您需要它出现,会更容易吗?