Не удается вставить TTTableViewController в контроллер навигации - PullRequest
0 голосов
/ 17 октября 2011

У меня есть приложение, в котором у меня есть контроллер TTTableView внутри Navigation Controller, который находится внутри вкладки.

Я хочу, чтобы, если пользователь выбирает элемент, он выдвигал другой TTTableView с элементами под этимcategory.

У меня есть код:

-(void)didSelectObject:(id)object atIndexPath:(NSIndexPath *)indexPath {
    if ([object isKindOfClass:[TTTableMoreButton class]]) {
        [super didSelectObject:object atIndexPath:indexPath];
    } else {
        CategoryViewController *viewController = [[CategoryViewController alloc] initWithNibName:@"CategoryViewController" bundle:nil];
        [self.navigationController pushViewController:viewController animated:YES];
        [viewController release];
    }
}

CategoryViewController настроен как

@interface CategoryViewController : TTTableViewController

, а в файле CategoryViewController.xib для источника данных и делегата установлено значениеВладелец файлов и представление установлено на просмотр таблицы, а класс просмотра таблицы установлен на TTTableView.

При запуске я получаю следующую ошибку при выборе строки

2011-10-17 16:18:23.819 Biz Insider[34067:f803] -[CategoryViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x6c93d30
2011-10-17 16:18:23.820 Biz Insider[34067:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CategoryViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x6c93d30'
*** First throw call stack:
(0x1893052 0x157ed0a 0x1894ced 0x17f9f00 0x17f9ce2 0xb4cf2b 0xb4f722 0x9ff7c7 0x9ff2c1 0x9b61e 0xa0228c 0xa06783 0x9bb48 0x9b1301 0x1894e72 0x89192d 0x89b827 0x821fa7 0x823ea6 0x823580 0x18679ce 0x17fe670 0x17ca4f6 0x17c9db4 0x17c9ccb 0x1f88879 0x1f8893e 0x972a9b 0x273d 0x26b5)
terminate called throwing an exceptionCurrent language:  auto; currently objective-c

Если я пытаюсь инажмите другое представление (у меня есть одно с веб-представлением на нем), затем оно будет работать нормально, или если я зайду в конструктор интерфейса и свяжу «tableView» владельца файла с объектом TTTableView, то оно будет работать нормально и выдвинет контроллер, за исключением «Pull down».«обновить» не будет работать, поэтому я предполагаю, что удаление выполняется некорректно.

Любая помощь будет полезнаЯ очень признателен.

РЕДАКТИРОВАТЬ: У меня есть ощущение, что это как-то связано со следующим

-(id<UITableViewDelegate>)createDelegate {
    return [[[TTTableViewDragRefreshDelegate alloc] initWithController:self] autorelease];
}

Это устанавливает делегат в TTTableViewDragRefreshDelegate, который реализует числоOfRowsInSection и весь этот мусор.Есть ли другой способ сделать это?

Ура, Дин

Ответы [ 2 ]

0 голосов
/ 17 октября 2011

Ну, это странно, но я изменил его с

CategoryViewController *viewController = [[CategoryViewController alloc] initWithNibName:@"CategoryViewController" bundle:nil];

на

CategoryViewController *viewController = [[CategoryViewController alloc] init];

, и теперь он волшебным образом работает ... не спрашивайте меня, как и почему.

Должно быть, в NIB было что-то, что мешало, но я не знаю, как теперь работает весь макет без NIB.

0 голосов
/ 17 октября 2011

В журнале говорится, что в вашем пользовательском классе CategoryViewController метод tableView:numberOfRowsInSection: не реализован и поэтому не может его вызвать.

Проверьте это и проверьте типы его параметров.

...