2017-01-16 4 views
1

Есть ли IOS/Swift метод 3,0 обратного вызова, который говорит, когда UITableViewController закончил загрузку (создание ячейки) а UITableView (после вызова .reloadData на табличном (в Swift)?есть метод обратного вызова, который сообщает, когда UITableViewController завершил создание ячеек UITableView?

(или альтернативный метод)

+0

что бы вы хотели сделать внутри этого метода? Возможно, знание этого может привести ко мне (или кому-то) что-то предложить. –

+0

Спасибо за комментарий. Я хотел бы получить список видимых ячеек, а затем выполнить вызов API для предварительной загрузки только данных относительно них (например, сценарий представления мастера/детали, где мастер показывает таблицу со списком доступных данных из первого API вызов и подробный вид показывают данные, которые извлекаются из второго вызова API. – mm24

+0

Что вы подразумеваете под «заканчивает загрузку»? – Sulthan

ответ

1

Функцию, которую вы ищете, не существует, но в соответствии с вашим комментарием выше можно было бы получить каждую ячейку (или какой-либо объект модели, который она принимает в качестве свойства), чтобы сделать API pre-load call? Таким образом, данные будут предварительно загружены для видимых ячеек. Когда новые ячейки будут прокручиваться, их данные будут загружены по очереди.

Например, в камере:

class MyCell: UITableViewCell { 

    var someObject: MyObject { 
     didSet { 
      someObject?.loadData() 
     } 
    } 
} 

и в контроллере представления:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCell(withIdentifier: "MyCell", for: indexPath) as! "MyCell" 
    cell.someObject = myObjects[indexPath.row] 
    return cell 
} 

Таким образом, вы только загрузка данных для клеток в поле зрения. Если вы хотите добавить:

func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { 
    cell.someObject.cancelLoading() 
} 

Вы можете убедиться, что объекты в ячейках больше не просматриваются, если они не требуются.

+0

Я думаю, что он означает, что вы используете cellForRowAtIndexPath, например, поэтому при создании ячейки вы также получаете информацию. Но я настоятельно рекомендую не делать этого, поскольку кажется, что вы не делаете это правильно. – Simon

+0

@Simon, в каком направлении вы порекомендовали бы? Я только что разработал метод, который извлекает только видимые ячейки, которые не были извлечены каждый раз, когда пользовательское взаимодействие закончилось на основе видимых индексов. Это звучит разумно для вас? – mm24

+0

@ mm24 Существует метод, который вызывается, когда ячейка должна отображаться (то есть, когда пользователь прокручивает эту ячейку, и ячейка не была видна раньше). – Sulthan