2017-08-25 79 views
0

使用Swift 3,我試圖以編程方式更改部分的標題顏色。Swift:更改TableView標題文本顏色 - 崩潰

如何將backgroundColor更改爲白色並將文本顏色更改爲黑色?

的章節標題改變顏色,但不顯示任何文本,然後當我將代碼添加到它崩潰

終止應用程序的標題文字顏色變化,由於未捕獲的異常 「NSInvalidArgumentException」的,理由是:「不能添加自身作爲子視圖」

Swift代碼

// Title for Header 
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 

    // Section Names 
    let sectionNames = ["Followed Blogs", "All Blogs"] 

    return sectionNames[section] 
} 

// View for Header 
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 

    let headerView = UIView() 

    let headerLabel = UILabel() 
    let sectionNames = ["Followed Blogs", "All Blogs"] 
    headerLabel.text = sectionNames[section] 
    headerLabel.frame = CGRect(x: 45, y: 5, width: 100, height: 35) 
    headerLabel.addSubview(headerLabel) 

    if (section == 0) { 

     headerView.backgroundColor = UIColor.green 
     headerLabel.textColor = UIColor.black 
    } else { 

     if darkMode { 

      headerView.backgroundColor = UIColor.white 
      headerLabel.textColor = UIColor.black 

     } else { 

      headerView.backgroundColor = UIColor.black 
      headerLabel.textColor = UIColor.white 
     } 
    } 

    return headerView 
} 

// Height for Section 
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 

    return 45 
} 
+1

'headerLabel.addSubview(headerLabel)'會引起了你的問題,你的意思'headerView.addSubview(headerLabel )'? – MadProgrammer

+0

是的,修好了,謝謝! – BroSimple

+0

請幫我解決這個問題? 「Followed Blogs」不適合將其顯示爲「Followed B ...」 – BroSimple

回答

1

headerLabel.addSubview(headerLabel)是dding標籤自我,這是你錯誤的根源

根據我對你的代碼的理解,你或許應該使用headerView.addSubview(headerLabel)代替

「中關注的博客」的文本不適合它顯示作爲「跟隨B ...」

這是(很可能)佈局問題,我個人調查將自動佈局約束添加到標籤,以便它綁定到頂部/底部/左/右邊距的父視圖

0

這只是添加MadProgrammer的答案。我想,而不是UIView你應該使用UITableViewHeaderFooterView

用法:

tableViewInstance.register(UITableViewHeaderFooterView.self, forHeaderFooterViewResuseIdentifier: "headerIdentifier") 

然後在viewForHeaderInSection

let tableViewHeader = tableview.dequeueReusableHeaderFooterView(withIdentifier: "headerIdentifier") 

順便說一句,就因爲你的標籤寬度的文本"Followed Blogs"在其不恰當太對於當前字體很小。爲什麼不加約束是這樣的:

headerView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-5-[label]-5-|", 
                    options: [], 
                    metrics: nil, 
                    views: ["tableView": headerLabel])) 

headerView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-5-[label]-5-|", 
                    options: [], 
                    metrics: nil, 
                    views: ["tableView": headerLabel])) 

你讓你的tableView的headerHeight是動態