我有一个表视图控制器,其中一个单元格中有一个表视图,在内部tableview中我有一个样本单元格,当用户开始编辑文本字段时我需要文本字段当键盘被解除时所有文本字段文本存储在一个数组中是继承人解雇代码
@objc func dismissKeyboard() {
view.endEditing(true)
let index = IndexPath(row: 0, section: 6)
let cell = tableView.cellForRow(at: index)
if (cell as? editCertificatesCell) != nil {
for i in 0..<certificates.count {
let index = IndexPath(row: i, section: 0)
let cell = tableView.cellForRow(at: index)
if let cell = cell as? eCCell {
let b = cell.ceText.text!
print(b)
// here is your field
}
}
}
这里是包含tableview的表视图单元类
import UIKit
class editCertificatesCell: UITableViewCell {
@IBOutlet weak var addCertificate: UIButton!
@IBOutlet weak var certificatesListTableView: UITableView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
@IBAction func ceD(_ sender: UIButton) {
}
}
extension editCertificatesCell {
func setCollectionViewDataSourceDelegate
<T: UITableViewDelegate & UITableViewDataSource>
(_ dataSourceDelegate:T , forRow row : Int )
{
certificatesListTableView.delegate = dataSourceDelegate
certificatesListTableView.dataSource = dataSourceDelegate
certificatesListTableView.reloadData()
}
}
这是主表视图中包含表视图的indexPath代码
let eCCells = tableView.dequeueReusableCell(withIdentifier: "eCCell", for: indexPath) as! eCCell
print(certificates[indexPath.row])
eCCells.ceText.text = certificates[indexPath.row]
eCCells.ceDelete.tag = indexPath.row
eCCells.ceDelete.addTarget(self, action: #selector(EditProfileTableViewController.deleteCer), for: UIControlEvents.touchUpInside)
这是我在控制台收到的错误但没有崩溃
invalid capability (0x14) "Unable to insert COPY_SEND
我只是想在用户编辑文本字段时创建一个文本字段文本数组,然后重新加载内部tableview并显示它们
1-听取键盘隐藏/显示在表视图控制器
2-键盘隐藏时访问可见单元格
3-循环每个可见单元格并访问与之关联的内部tableview
4-访问内部tableview中的可见单元格
5-访问每个内部单元格中的文本字段属性,并将其文本与当前外部和内部单元格索引一起存储,以便在重新加载后反映在模型中
这是我应该使用它而不是dismissKeyboard()函数的答案
@objc func dismissKeyboard() {
view.endEditing(true)
let index = IndexPath(row: 0, section: 6)
let cell = tableView.cellForRow(at: index) as! editCertificatesCell
var certificatesSample = [String]()
certificatesSample.removeAll()
for i in 0..<certificates.count {
let index1 = IndexPath(row: i, section: 0)
cell.certificatesListTableView.cellForRow(at: index1)
let cell = cell.certificatesListTableView.cellForRow(at: index1)
if let cell = cell as? eCCell {
let b = cell.ceText.text!
print(b)
certificatesSample.append(b)
}
}
certificates.removeAll()
certificates = certificatesSample
certificatesSample.removeAll()
}