Используя представление нижнего колонтитула раздела, чтобы добавить строку в раздел, где находится нижний колонтитул? - PullRequest
0 голосов
/ 29 апреля 2019

Я хотел бы знать, возможно ли создать UITableView, который, когда пользователь нажимает на вид нижнего колонтитула раздела (содержащий, например, UIButton), добавляет строку в раздел, в котором находится нижний колонтитул раздела вид есть.

Пытаясь создать такой UITableView, я понял, что существует серьезная проблема, заключающаяся в том, что я не могу получить ссылку на раздел, в котором находится вид нижнего колонтитула с косой частью. Поэтому я не могу использовать такие методы, как insertRows(at:with:), чтобы выполнить необходимое добавление.

Есть ли способ получить ссылку на строку? Или какие-нибудь методы, чтобы обойти это так, чтобы UITableView "знал", куда вставить строку, когда постукивает представление нижнего колонтитула раздела?

1 Ответ

1 голос
/ 29 апреля 2019

Есть несколько способов сделать это, но проще всего, вероятно, добавить распознаватель жестов в представление нижнего колонтитула - вам не нужна кнопка, вы можете проверить щелчок где угодно, но ваш дизайн может быть лучшес кнопкой в ​​зависимости от того, что вы включаете в представление нижнего колонтитула.

Вы можете использовать атрибут tag, чтобы отслеживать раздел, и обработка проста.

Вот быстрыйНапример, где я только что предположил, data1 и data2 представлены в двух разделах

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "tableViewCell", for: indexPath) as UITableViewCell

    if indexPath.section == 0
    {
        cell.textLabel?.text = data1[indexPath.row]
    }
    else
    {
        cell.textLabel?.text = data2[indexPath.row]
    }
    return cell
}

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    let footerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 30))
    footerView.backgroundColor = UIColor.blue
    footerView.tag = section

    let clickGesture = UITapGestureRecognizer(target: self, action:  #selector(self.didClickFooter))
    footerView.addGestureRecognizer(clickGesture)


    return footerView
}
@objc func didClickFooter(sender : UITapGestureRecognizer) {
    // Do what you want here, once you identify the section

    if sender.view!.tag == 0
    {
        data1.append("new data1")
    }
    else
    {
        data2.append("new data2")
    }
    tableView.reloadData()

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...