使用xib为标题创建了自定义标题类。试图从该标头类中获取UITextField的值。下面是代码:
HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\office\16.0\excel\security
DWORD: blockcontentexecutionfrominternet
Value = 1
当尝试从下面的文本字段中获取价值时:
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let customHeaderView = Bundle.main.loadNibNamed("AddHeaderTableViewCell", owner: self, options: nil)?.last as! AddHeaderTableViewCell
customHeaderView.txtFieldAdd.placeholder = ""
return customHeaderView
}
该行出现错误
@objc func addMoreToMytask(sender: UIButton!) {
isAddStep = false
let header = tblAddedTasks.headerView(forSection: 0) as? AddHeaderTableViewCell
let sectionTitle = header?.textLabel?.text
arrAdded.append((header?.txtFieldAdd.text!)!)
tblAddedTasks.reloadData()
}
运行时发出警告并崩溃
let header = tblAddedTasks.headerView(forSection: 0) as? AddHeaderTableViewCell
请提供相同的指导。
答案 0 :(得分:1)
您可以尝试将标头对象用作成员。
var customHeaderView : AddHeaderTableViewCell = nil
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
customHeaderView = Bundle.main.loadNibNamed("AddHeaderTableViewCell", owner: self, options: nil)?.last as! AddHeaderTableViewCell
customHeaderView.txtFieldAdd.placeholder = ""
return customHeaderView
}
然后您可以使用成员对象;
@objc func addMoreToMytask(sender: UIButton!) {
isAddStep = false
// let header = tblAddedTasks.headerView(forSection: 0) as? AddHeaderTableViewCell
// let sectionTitle = header?.textLabel?.text
let sectionTitle = customHeaderView.textLabel?.text
arrAdded.append((customHeaderView.txtFieldAdd.text!)!)
tblAddedTasks.reloadData()
}
我不确定,但原因可能是可选值。 Tableview仅在屏幕上呈现视图,您可能会得到零。 该函数的签名为;
func headerView(forSection section: Int) -> UITableViewHeaderFooterView?
它返回一个可选变量。 您试图转换一个可选变量。 XCode在强制转换可选变量时可能无法完美运行,因此它无法以足够的信息警告您。
您可以尝试;
tblAddedTasks.headerView(forSection: 0) as! AddHeaderTableViewCell
或
tblAddedTasks.headerView(forSection: 0)! as? AddHeaderTableViewCell
可能会崩溃,但至少您会看到崩溃的真正原因。