UITableViewRowData, numberOfSectionsInTableView - PullRequest
3 голосов
/ 29 мая 2011

Я пытался понять, почему numberOfSectionsInTableView вызывается несколько раз при каждом обновлении моего источника данных.Из трассировки стека в gdb я вижу следующее

#0  -[JobPickerTVC numberOfSectionsInTableView:] (self=0x4d61fe0, _cmd=0x6207f5, tableView=0x6034800) at JobPickerTVC.m:153
#1  0x003d66ff in -[UITableViewRowData(UITableViewRowDataPrivate) _updateNumSections] ()
#2  0x003d63b0 in -[UITableViewRowData invalidateAllSections] ()
#3  0x00299010 in -[UITableView(_UITableViewPrivate) _endCellAnimationsWithContext:] ()
#4  0x002891e8 in -[UITableView endUpdates] ()
#5  0x000050c8 in -[JobPickerTVC controllerDidChangeContent:] (self=0x4d61fe0, _cmd=0x17109d, controller=0x4da5e40) at JobPickerTVC.m:442

, за которым следует

#0  -[JobPickerTVC numberOfSectionsInTableView:] (self=0x4d61fe0, _cmd=0x6207f5, tableView=0x6034800) at JobPickerTVC.m:153
#1  0x003d66ff in -[UITableViewRowData(UITableViewRowDataPrivate) _updateNumSections] ()
#2  0x003d6417 in -[UITableViewRowData ensureAllSectionsAreValid] ()
#3  0x0029902e in -[UITableView(_UITableViewPrivate) _endCellAnimationsWithContext:] ()
#4  0x002891e8 in -[UITableView endUpdates] ()
#5  0x000050c8 in -[JobPickerTVC controllerDidChangeContent:] (self=0x4d61fe0, _cmd=0x17109d, controller=0x4da5e40) at JobPickerTVC.m:442

Из того, что я могу сказать, код выполняет [UITableViewRowData invalidateAllSections ](строка № 2 первой трассы), а затем [UITableViewRowData provideAllSectionsAreValid ] (строка № 2 второй трассы).Оба они заканчиваются вызовом [JobPickerTVC numberOfSectionsInTableView:].Так [JobPickerTVC numberOfSectionsInTableView:] вызывается дважды.Я хотел бы знать, почему это происходит и что делают эти операции.

Есть еще один вызов numberOfSectionsInTableView по другой причине, но я хотел бы сначала разобраться в них.

1 Ответ

1 голос
/ 27 января 2012

Ваша таблица numberOfSectionsInTableView вызывается несколько раз, потому что вы перезагружаете данные таблицы. Когда вы перезагружаете таблицу, этот метод проверяет всех делегатов таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...