Запретить пользователям прокручивать вверх в TableView?

#swift #uitableview

#swift #uitableview

Вопрос:

Подобно tinder, если пользователь опускается, я не хочу, чтобы они могли вернуться вверх. Как мне это сделать?

Я попробовал приведенный ниже код, но он продолжает выдавать ошибку: индекс вне диапазона.

     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
    }
 

Ответ №1:

См. Приведенный ниже код,

Вам необходимо сохранить смещение содержимого последней прокрутки в tableview, когда пользователь прокручивает вниз, обратитесь к методу 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
    }
}