xcode 4.2 iOS Tableview с использованием раскадровки - PullRequest
2 голосов
/ 13 декабря 2011

Я создал приложение с вкладками для iOS, используя xcode 4.2 и раскадровку. Я добавил один tableviewcontroller с пользовательской ячейкой на нем, при щелчке по строке, я хочу открыть один tableviewcontroller, я использовал следующий код ниже

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
categoryClass *cc = [datas objectAtIndex:indexPath.row];

[tableView deselectRowAtIndexPath:indexPath animated:NO];

iSubProducts *subProducts = [[iSubProducts alloc] init];
subProducts.title = cc.categoryName;
subProducts.catID = cc.categoryID;
[[self navigationController] pushViewController:subProducts animated:YES];
[subProducts release];


}

но когда я щелкаю строку, появляется следующая ошибка:

* Завершение приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «UITableView dataSource должен вернуть ячейку из tableView: cellForRowAtIndexPath

на моем контроллере таблицы iSubProducts, у меня есть следующее:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"myCell2";

iSubProductsCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

productSubClass *cc = [datas2 objectAtIndex:indexPath.row];
NSLog(@"Product Name: %@", cc.productName);
cell.txtProductName.text  = cc.productName;
cell.txtProductDesc.text = cc.productDesc;

return cell;

}

Я предполагаю, что именно здесь происходит ошибка, ячейка возвращает нулевое значение. Когда я пытаюсь подключить iSubProducts tableviewcontroller, используя кнопку или с помощью кнопки, все работает нормально, но если щелкнуть по строке, эта ошибка появляется.

Я довольно новичок в разработке под iOS, и, возможно, возникла ошибка при открытии tableviewcontroller из tableviewcontroller с пользовательской ячейкой на нем. Я уже 2 дня бьюсь головой и много гуглял, к сожалению, не нашел решения. Я почти уверен, что нет ошибки в iSubProducts tableviewcontroller, так как он работает, если я попытался нажать его с кнопки. Пожалуйста, мне нужен совет по этому вопросу, я сейчас застрял с этим вопросом. Спасибо всем.

Ответы [ 2 ]

6 голосов
/ 14 декабря 2011

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

Я полностью остался в стороне от DidSelectRowAtIndexPath.Вместо этого я использовал segue (к чему я стремился).

Этот фрагмент кода взят из примера раскадровки Apple, в котором используются таблицы.

http://developer.apple.com/library/ios/#samplecode/SimpleDrillDown/Listings/Classes_RootViewController_m.html#//apple_ref/doc/uid/DTS40007416-Classes_RootViewController_m-DontLinkElementID_10

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([[segue identifier] isEqualToString:@"ShowSelectedPlay"]) {
            NSIndexPath *selectedRowIndex = [self.tableView indexPathForSelectedRow];
            DetailViewController *detailViewController = [segue destinationViewController];
            detailViewController.play = [dataController objectInListAtIndex:selectedRowIndex.row];
    }
}

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

0 голосов
/ 14 января 2012

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

...