быстрое изменение текста элемента массива раздела или цвета шрифта в заголовке таблицы - PullRequest
0 голосов
/ 27 февраля 2020

Мой код просмотра таблицы -

    import UIKit

    class ViewController: UIViewController {
    var categories = ["Action", "Drama", "Science Fiction", "Kids", "Horror"]
   }
   extension ViewController : UITableViewDelegate { }

   extension ViewController : UITableViewDataSource {
     func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) ->      String? {
    return categories[section]
  }

  func numberOfSections(in tableView: UITableView) -> Int {
    return categories.count
  }



   func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) ->   Int {
    return 1
  }

  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) ->     UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! CategoryRow
    return cell
    }

 }

Результат на симуляторе - -

enter image description here Теперь я хочу настроить шрифт / текст из различных разделов, таких как «Экшн», «Драма», «Научная фантастика», «Дети», «Ужасы», отличные от черного, могут быть увеличены и т. д. Как это возможно?

Ответы [ 4 ]

1 голос
/ 27 февраля 2020

С помощью метода tableView(_:titleForHeaderInSection:) вы не можете изменять свойства пользовательского интерфейса текста заголовка.

Вам необходимо реализовать методы tableView(_:viewForHeaderInSection:) и tableView(_:heightForHeaderInSection:), чтобы получить пользовательский интерфейс для заголовка, т.е.

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let label = UILabel()
    label.text = categories[section]
    label.font = UIFont.systemFont(ofSize: 20.0, weight: .bold)
    label.textColor = .red
    label.sizeToFit()
    return label
}

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 50.0
}

Просто верните UILabel экземпляр с необходимыми текстовыми атрибутами в tableView(_:viewForHeaderInSection:)

0 голосов
/ 27 февраля 2020

В методе

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) ->      String? {
return categories[section]

табличное представление использует фиксированный стиль шрифта для заголовков разделов. Если вам нужен другой стиль шрифта, вместо этого верните пользовательское представление (например, объект UILabel) в метод делегата tableView (_: viewForHeaderInSection :).

0 голосов
/ 27 февраля 2020

Вы можете использовать метод делегата UITableView tableView (_: viewForHeaderInSection:) , чтобы получить пользовательский интерфейс для заголовка

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

       let headerView = UIView(frame: CGRect(x: 0, y: 0, width: yourTable.bounds.width, height: 40))
       let headerLabel = UILabel(frame: CGRect(x: 15, y: 0, width: yourTable.bounds.width, height: 40))
       headerLabel.font = UIFont.boldSystemFont(ofSize: 20)
       headerLabel.textColor = .blue

       headerLabel.text = self.tableView(self.yourtableView, titleForHeaderInSection: section)
       headerLabel.sizeToFit()
       headerView.addSubview(headerLabel)

       return headerView
}

и высоту для секции

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 

        return 30 //whatever you want

}
0 голосов
/ 27 февраля 2020

Функция ниже доступна в UITableViewDelegate

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        <#code#>
    }

У вас будет полный контроль над заголовком каждого раздела, и настройку можно выполнить соответствующим образом.

...