我想将服务器的特定值放在表格视图的顶部,即第一行 我想将来自用户的反馈放在表格视图的顶部
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()
}
}
}
实际上,我从用户那里获得了所有反馈,我希望用户反馈位于最上方的单元格中,以便我可以实现编辑和删除反馈功能。
答案 0 :(得分:0)
如果我做对了,您想在tableView上引入一个不同的单元格,该单元格与其余单元格是唯一的,放在顶部,对吗?话虽如此,在执行此操作之后,您需要在cellForRowAt方法中添加第二个UITableViewCell
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,但您的问题有点令人困惑。
答案 1 :(得分:0)
为表格创建两个部分:
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()
}
}
为此,您将需要两种不同的单元格类型,因为我认为反馈单元格看起来与其他单元格不同。注意,我没有使反馈单元出队,只是实例化了它。那是因为该单元永远不会被重复使用,所以不必费心注册和排队。