微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

禁止用户在 tableView 中向上滚动?

如何解决禁止用户在 tableView 中向上滚动?

类似于火种,如果用户下降,我不希望他们能够向上返回。我该怎么做?

我尝试了下面的代码,但它一直运行错误:索引超出范围。

    func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
        return userList.count
    }
    
    func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "tableCell",for: indexPath) as! FeedTableViewCell
        

        cell.collectionView.delegate = self
        cell.collectionView.dataSource = self
        
        //reloading the tableview
        let artist: usermodel
        
        artist = self.userList[indexPath.row]
        
        cell.nameLabel.text = artist.name
        cell.passionLabel.text = artist.passion
        
        cell.collectionView.reloadData()
        
        if indexPath.row == 1 {
            userList.removeFirst()
        }

        return cell
    }

解决方法

参考下面的代码,

您需要存储tableview最后一次滚动的Content Offset,当用户向下滚动时,参考scrollViewDidScroll方法。

@IBOutlet weak var tableView: UITableView!

var lastContentOffsetY:CGFloat = 0.0

override func viewDidLoad() {
    super.viewDidLoad()

    self.tableView.bounces = false
    self.tableView.register(UITableViewCell.self,forCellReuseIdentifier: "reuse")
    self.tableView.reloadData()
}

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

func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    
    let cell = tableView.dequeueReusableCell(withIdentifier: "reuse")
    
    return cell!
}

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    
    
    if(scrollView.contentOffset.y < self.lastContentOffsetY){
        self.tableView.setContentOffset(CGPoint(x:scrollView.contentOffset.x,y: self.lastContentOffsetY),animated: false)
    }else{
        self.lastContentOffsetY = scrollView.contentOffset.y
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。