В CocoaTouch у таблиц есть делегат и источник данных. Делегат отправляет и получает сообщения для табличного представления, а источник данных контролирует информацию, которая содержится в таблице, а также верхние и нижние колонтитулы таблицы. Источник данных сообщает таблице, сколько строк нарисовать, сколько разделов, что поместить в заголовки разделов и так далее.
Табличное представление запрашивает источник данных о том, сколько строк нарисовать через
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
метод. Затем в
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
метод, tableView запрашивает ячейку для заполнения таблицы из источника данных. При программировании для iPhone таблицы в основном заполняются массивом, единственной переменной (объектом), которая содержит много других переменных (объектов). Вы говорите массиву, какой объект вы хотите, спрашивая
object = [array objectAtIndex:INTEGER]; //where INTEGER is an unsigned (zero or greater, no minus)
что случилось, так это то, что ваш источник данных ожидает X числа объектов для таблицы и имеется X-Y. Если он считает, что их 10, а их только 9, когда таблица запрашивает 10-й объект, вы получаете сбой, потому что нет объекта, который можно дать.
посмотрите в своем коде строку hte
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
и посмотрите, что это за код. Скорее всего, вы предоставляете неверные данные.
Удачи