2016-08-11 4 views
0

Если у меня есть разные разделы на моем UITableView, то свойство NSIndexPath.row даст мне индекс в текущем разделе.Можно ли получить «глобальный» индекс от NSIndexPath?

Можно ли получить абсолютный индекс ячейки в таблице без учета разделов?

Например: если таблица имеет 2 секции, первая из которых имеет 10 элементов, я хочу получить индекс = 10 для первого элемента второй секции.

+0

Зачем нужен глобальный индекс? Это не имеет смысла. Если вам это действительно нужно, то вы можете добавить все свои разделы и создать собственный собственный индекс индексов. – Harsh

+0

@Harsh: Мне нужно это, потому что я использую его, чтобы определить, когда нужно получить больше элементов для бесконечного прокрутки – StackOverflower

+0

переопределить 'tableView: willDisplayCell: forRowAtIndexPath' в вашем делетете, а затем вы можете определить, когда пользователь достигнет конца таблицы. – Farnabaz

ответ

2

Я согласен с некоторыми из комментариев, что это может быть не лучшим способом для реализации бесконечной прокрутки. Отвечая на ваш первоначальный вопрос, вы можете сделать что-то подобное в Swift:

extension UITableView { 
    func globalIndexPath(for localIndexPath: NSIndexPath) -> Int { 
     var totalRows = 0 
     for i in 0..<localIndexPath.section { 
      totalRows += self.numberOfRowsInSection(i) 
     } 
     return totalRows + localIndexPath.row 
    } 
} 
0

Если вы хотите, чтобы проверить, были ли вы достигли конца табличном вы можете сделать это с помощью следующего кода:

func scrollViewDidEndDecelerating(scrollView: UIScrollView) { 
    let offset = scrollView.contentOffset 
    let bounds = scrollView.bounds 
    let size = scrollView.contentSize 
    let inset = scrollView.contentInset 
    let y = CGFloat(offset.y + bounds.size.height - inset.bottom) 
    let h = CGFloat(size.height) 

    let reload_distance = CGFloat(-100) 

    if (y > (h + reload_distance)) { 
     //Do something heree... The code will reach here once the table view reaches the end. 
    } 
} 
Смежные вопросы