Как отобразить пользовательский вид нижнего колонтитула в таблице? - PullRequest
0 голосов
/ 31 августа 2018

Я создал UIview класс Xib, чтобы отобразить его в нижнем колонтитуле моей таблицы. FooterView

import UIKit

/// This class is to display footer view in a settings table view
class FooterView: UIView {
    override func awakeFromNib() {
        super.awakeFromNib()
    }
}

Я отображаю это как показано ниже:

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    let view = FooterView(frame: CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 140))
    return view
}

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

Что с этим не так? Я не могу видеть нижний колонтитул и получаю так много места между tableview строками.

enter image description here

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Объяснение, почему у вас есть пустой интервал: это вызвано вашим методом heightForFooterInSection, который оставляет 100 пикселей для footerView. К сожалению, вы не зарегистрировали перо FooterView для вашего tableView, и оно не знает, что искать в этом месте.

Как решить вашу проблему: В вашем ViewController вам необходимо зарегистрировать перо FooterView, которое будет использоваться вашим tableView.

EG .: (Обратите внимание, что вам нужно установить reuseIdentifier для вашего footerView.

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.register("FooterView", forHeaderFooterViewReuseIdentifier: "FooterView")
}

После этого вы можете удалить footerView из очереди аналогично ячейке:

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    let footerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "FooterView")
    return footerView
}
0 голосов
/ 31 августа 2018

Использование StoryBoard

В UITableView Вы можете перетащить UIView, он будет установлен как FooterView, если у вас более 0 прототипов ячеек. После перетаскивания вы можете видеть его в иерархии табличных представлений как подпредставление. Теперь вы можете добавить UILabel UIButton или любой компонент в этом представлении, настроить высоту и т. Д. Вы также можете установить IBAction в файл классов ViewController.

Программный

let customView = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 50))
customView.backgroundColor = UIColor.red
let button = UIButton(frame: CGRect(x: 0, y: 0, width: 100, height: 50))
button.setTitle("Submit", for: .normal)
customView.addSubview(button)

//Add that view in Table Footer View.
tableView.tableFooterView = customView // Here you can also use your xib View.

При использовании XIB

class MyClass: UIView {

    class func instanceFromNib() -> UIView {
        return UINib(nibName: "nib file name", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! UIView
    }
}

Инициализируйте представление и используйте его, как показано ниже

let FooterView = MyClass.instanceFromNib()
tableView.tableFooterView = FooterView

enter image description here

Выход:

enter image description here

...