gpt4 book ai didi

ios - UITableviewcell 行为重复且不一致

转载 作者:行者123 更新时间:2023-11-30 11:59:29 25 4
gpt4 key购买 nike

我有一个 UItableview 单元,我从 firebase 获取其数据。我有 2 个问题:

  1. 当我们滚动回该索引路径时,我的标签尺寸会有所不同。

我正在执行以下代码,但仍然无法理解该行为。我什至尝试删除单元格 subview ,但这只是不会加载表中的单元格。

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

let post = posts[indexPath.row]
if let cell = tableView.dequeueReusableCell(withIdentifier: "FeedCell") as? FeedCell {

cell.caption.text = nil
cell.configureCell(post: post)// sets the caption text here!
cell.caption.sizeToFit()
cell.delegate = self

return cell
} else {
return FeedCell()
}
}
  • 每次单元格出现在 View 中时,我都会对单元格上的 View 进行动画处理。但每当我执行它时,动画都是针对所有单元格的。可能的解决办法是什么?代码:

    class FeedCell: UITableViewCell {

    @IBOutlet weak var caption: UILabel!

    @IBOutlet weak var activityindicator: NVActivityIndicatorView!



    var usersender: User!
    var posts: Posts!
    var viewRef: DatabaseReference!
    var users: User!

    var delegate: FeedCellDelegate!

    override func layoutSubviews() {
    super.layoutSubviews()

    contentView.layoutIfNeeded()

    }

    func setDelegate(delegate: FeedCellDelegate) {
    self.delegate = delegate
    }

    override func awakeFromNib() {
    super.awakeFromNib()


    NotificationCenter.default.addObserver(self, selector: #selector(animateIndicator), name: .animateIndicator, object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(stopIndicator), name: .stopIndicator, object: nil)
    emotionDisplay.alpha = 0.0

    caption.addDropShadow(opacity: 3, radius: 8)


    }


    @objc func animateIndicator(note: Notification){
    activityindicator.startAnimating()
    }

    @objc func stopIndicator(note: Notification){
    activityindicator.stopAnimating()
    }





    @IBAction func gotoprof(_ sender: Any) {
    self.delegate.segueToUser(user: usersender)
    }




    func configureCell(post: Posts, img: UIImage? = nil) {

    self.posts = post
    self.caption.text = posts.caption

    }

    }
  • 请为我指明正确的方向。

    最佳答案

    就像 @Tj3n 所写 - 所有单元格都观察到相同的通知。

    最简单的方法是使用您在 FeedCell 类中编写的代码为您想要设置动画的单元格创建第二个类。

    对于其他单元格,只需从 awakeFromNib() 中删除:

    NotificationCenter.default.addObserver(self, selector: #selector(animateIndicator), name: .animateIndicator, object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(stopIndicator), name: .stopIndicator, object: nil)

    awakeFromNib() 应该看起来:

        override func awakeFromNib() {
    super.awakeFromNib()
    caption.addDropShadow(opacity: 3, radius: 8)
    }

    关于ios - UITableviewcell 行为重复且不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47432940/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com