2017-08-03 78 views
1

我想將元素數量限制爲三個。當我添加元素四時,元素一應該消失。如何避免重新加載整個表格,中斷滾動

如果我想滾動繼續正常,我應該告訴UITableView我通過調用deleteRowsAtIndexPaths刪除整個section零中的行。之後,我需要告訴UITableView你在第三個section(節索引2)處插入了一堆行。

這樣你就可以避免重新加載整個表格,中斷滾動。

但不幸的是,它不適合我。

給我這個錯誤:

'attempt to delete row 3 from section 2, but there are only 1 sections before the update' 

代碼:

//scrolling down time calling this method 
    func oldestState(){ 
     //var students : [[Student]]? = [[],[],[]] 
     let data = getdata() 
     self.students?[(self.firstIndex+self.count) % (self.students?.count)!] = data 
     if (self.count != 3) { 
      self.count += 1 
     } else { 
      self.firstIndex = (self.firstIndex+1) % (self.students?.count)! 
     } 

     self.newsFeedTableView.beginUpdates() 
     let indexPathsDeleted = (0..<(data 
      .count)).map { IndexPath(row: $0, section: (self.students?.count)! - 1) } 
     self.newsFeedTableView.deleteSections([0], with: UITableViewRowAnimation.automatic) 
     self.newsFeedTableView.deleteRows(at: indexPathsDeleted, with: UITableViewRowAnimation.automatic) 
     self.newsFeedTableView.endUpdates() 

     self.newsFeedTableView.beginUpdates() 
     let indexPathsInsert = (0..<(data 
.count)).map { IndexPath(row: $0, section: (self.students?.count)! - 1) } 
     self.newsFeedTableView.insertSections([2], with: UITableViewRowAnimation.automatic) 
     self.newsFeedTableView.insertRows(at: indexPathsInsert, with: UITableViewRowAnimation.automatic) 
     self.newsFeedTableView.endUpdates() 
    } 


    func getdata() -> [Student]{ 

     var _students = [Student]() 
     for i in itemNumber..<(itemNumber + 4) { 
      let student = Student() 
      student.name = "\(i)" 
      print("adding student roll number : \(student.name)") 
      _students.append(student) 
     } 
     itemNumber += 4 
     return _students 
    } 
} 

Here is full Git code :

+0

如果您最多隻有3行,那麼只需重新加載整個表。理解這些代碼會更容易,而且很可能你永遠不需要優化它。 – NRitH

+0

@NRitH我需要3段最大和每個部分持有基於api響應項目的行數 –

+0

@NRitH每個請求返回20個帖子或更多,它將能夠追加一個部分,所以當用戶滾動和用戶轉到部分的中間然後調用Web請求並插入一個部分。當部分達到3然後4請求插入部分並從頂部部分移到表視圖。它有道理嗎?請你幫我 –

回答

2

我不知道的tableview循規蹈矩的數據源,但是從錯誤,它告訴我們顯然,你只有一個部分,所以你不能處理第2部分,因爲沒有第2部分。你只能處理第0部分。 你可以刪除這個whol e行,並在第0.besides部分添加行,您應該處理self.students數組,讓它匹配tableview行,否則會崩潰。

UPDATE:

此承諾解決問題表滾動

I have correct it,This version.

此承諾解決問題表滾動得到生澀

I have correct it,This version.

+0

在這裏完整的源代碼https://github.com/nazmulkp/PagginationSwift3/blob/master/PagginationSwift3/ViewController.swift你會檢查請從那裏 –

+0

我已閱讀的代碼,只有部分,第一次調用initUpdateUI,count屬性爲1.因此該部分是1. – zacks

+0

你能幫我解決這個問題嗎?我該怎麼辦 。我花了大約10天時間。請 –