簡體   English   中英

訪問自定義標題視圖的組件

[英]Access components of custom header view

為頭創建自定義頭類,使用xib查看。 試圖從該頭類中獲取 UITextField 的值。 下面是代碼:

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

運行時發出警告和崩潰

Cast from 'UITableViewHeaderFooterView?' to unrelated type 'AddHeaderTableViewCell' always fails

請指導相同。

您可以嘗試使用標頭對象作為成員。

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 只在屏幕上呈現視圖,您可能會得到 nil。 函數的簽名是;

func headerView(forSection section: Int) -> UITableViewHeaderFooterView?

它返回一個可選變量。 您嘗試強制轉換可選變量。 XCode 可能無法完美地轉換可選變量,因此它無法提供足夠的信息來警告您。

你可以試試;

tblAddedTasks.headerView(forSection: 0) as! AddHeaderTableViewCell

或者

tblAddedTasks.headerView(forSection: 0)! as?  AddHeaderTableViewCell

可能會崩潰,但至少你會看到崩潰的真正原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM