2017-02-08 24 views
0

У меня есть метод, который прокручивает мой UITableView на дно:После добавления вида заголовка, выделите нижнюю часть UITableView причины NSException

func tableViewScrollToBottom(_ animated: Bool) { 

    let delay = 0.1 * Double(NSEC_PER_SEC) 
    let time = DispatchTime.now() + Double(Int64(delay))/Double(NSEC_PER_SEC) 

    DispatchQueue.main.asyncAfter(deadline: time, execute: { 
     print(self.tview.numberOfRows(inSection: 0)) 
     print(self.tview.numberOfSections) 
     let indexPath = IndexPath(row: self.tview.numberOfRows(inSection: 0), section: self.tview.numberOfSections) 
     print(indexPath) 
     print("it will crash now") 
     self.tview.scrollToRow(at: indexPath, at: .bottom, animated: animated) 

    }) 
} 

он работал задолго до того, однако, когда я добавил Заголовок View - он выходит из строя.

Я вижу в консоли:

8 
1 
[1, 8] 
it will crash now 

, так что я не понимаю, почему эта строка:

self.tview.scrollToRow(at: indexPath, at: .bottom, animated: animated) 

, вызывает сбой. Что мне здесь не хватает?

+0

Если 8 строк в вашей секции, то последняя строка строка 7. Точно так же, если есть один раздел, то последний раздел - это раздел 0. Вы должны вычесть 1 из строки и раздела пути указателя, который вы пытаетесь прокрутить. – dan

+0

@ дан, конечно, ты прав. Постарайтесь добавить его в качестве ответа? – user3766930

ответ

1

У вас есть проблема с этим

let indexPath = IndexPath(row: self.tview.numberOfRows(inSection: 0), section: self.tview.numberOfSections) 

Попробуйте сделать -1

let indexPath = IndexPath(row: self.tview.numberOfRows(inSection: 0)-1, section: self.tview.numberOfSections-1)