Я хочу разместить определенное значение в верхней части ячейки - PullRequest
0 голосов
/ 31 марта 2019

Я хочу разместить определенное значение с сервера в верхней части табличного представления, т.е. в первой строке я хочу разместить отзыв пользователя в верхней части табличного представления

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        tableView.tableFooterView = UIView(frame: .zero)
        if let cell = tableView.dequeueReusableCell(withIdentifier: "AllFeedbackCell", for: indexPath) as? AllFeedbackCell {
            cell.feedback = feedbacks?[indexPath.row]
            return cell
        }
        return UITableViewCell()
    }
 var feedback: Feedback? {
        didSet {
            if let username = feedback?.username, !username.isEmpty {
                userEmailLabel.text = username
            } else {
                if let userEmail = feedback?.email, let emailIndex = userEmail.range(of: "@")?.upperBound {
                    userEmailLabel.text = String(userEmail.prefix(upTo: emailIndex)) + "..."
                }
            }
            feedbackDateLabel.text = feedback?.timeStamp.getFirstChar(10)
            userFeedbackLabel.text = feedback?.feedbackString
            if let avatarURLString = feedback?.avatar {
                let imageURL = URL(string: avatarURLString)
                gravatarImageView.kf.setImage(with: imageURL)
            }
            roundedCorner()
}
}
}

На самом деле, я получаю все отзывы от пользователей и хочу, чтобы отзывы пользователей находились в самой верхней ячейке, чтобы я мог реализовать функцию редактирования и удаления отзывов.

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Создайте две секции для таблицы:

func numberOfSections(in tableView: UITableView) -> Int {

    return 2

}

Количество строк в каждом разделе не зависит друг от друга:

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

    switch section {

    case 0:
        return feedbacks.count

    case 1:
        return someArray.count

    default:
        return 0

    }

}

А затем загрузите ваши клетки:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let p = indexPath.row

    switch indexPath.section {

    case 0:

        let cell = FeedbackTableViewCell()
        cell.someLabel.text = feedbacks[p].someProperty
        return cell

    case 1:

        let cell = tableView.dequeueReusableCell(withIdentifier: someReusableCellId, for: indexPath) as! SomeReusableTableViewCell
        cell.someLabel.text = someArray[p].someProperty
        return cell

    default:
        return UITableViewCell()

    }

}

Для этого вам понадобятся два разных типа ячеек, потому что я предполагаю, что ячейка обратной связи не будет похожа на другие ячейки. Обратите внимание, что я не удалил из очереди ячейку обратной связи, я просто создал ее; это потому, что ячейка никогда не будет использоваться повторно, поэтому не беспокойтесь о регистрации и постановке ее в очередь.

0 голосов
/ 31 марта 2019

Если я правильно понял, вы хотите ввести в tableView другую ячейку, которая будет уникальной для остальных ячеек и расположена сверху, правильно?При этом после этого вам понадобится второй UITableViewCell в методе: cellForRowAt do

if indexPath.row == 0 {
   let cell = tableView.dequeReusableCell(withReuseIdentifier: TopCellId, for indexPath) as! TopCell

//here you update NewCell's properties with your code

return cell
} else {
  let cell = tableView.dequeReusableCell(withReuseIdentifier: RegularCellId, for: indexPath) as! RegularCell

// Here you update the cell which will be used for the rest of the tableView

return cell
}

Возможно, вы также можете использовать TableViewHeader, но ваш вопрос немного сбивает с толку.

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