У меня есть два TableViewController с переходом между ними. Когда пользователь щелкает ячейку в первом TVC, он получает второй TVC. Переход является модальным , имеет идентификатор под названием "segueToLocationDetails" и передает вместе с ним объект. Вы можете думать о втором TVC как о странице "деталей" более или менее.
Мой код отлично работает в сценарии, который я описал выше. Однако он ломается, как только я встраиваю второй TVC в контроллер навигации.
Пример. У меня он работает отлично. Затем я выделяю второй TVC в IB, нахожу указатель мыши на Product | Embed in | Navigation controller. Теперь второй TVC находится в навигационном контроллере. Однако переход по-прежнему указывает на второй TVC. Я удаляю переход и снова подключаю его из ячейки первого TVC к контроллеру навигации и обязательно присваиваю переходу идентификатор. Запустите еще раз, и он сломается! ошибка ниже ...
2011-12-23 15: 30: 45.469 Project12 [5219: 11603] - [UINavigat ionController setDetailsObject:]: нераспознанный селектор отправлен в экземпляр 0x7b92ce0 2011-12-23 15:30:45.471 Project12 [5219: 11603] * Срок завершения работы приложения для неперехваченного исключения 'NSInvalidArgumentException', причина: '- [UINavigationController setDetailsObject:]: нераспознанный селектор отправлено в экземпляр 0x7b92ce0 ' * Стек вызовов первого вызова: (0x16ea052 0x150ad0a 0x16ebced 0x1650f00 0x1650ce2 0x3933 0x703e1e 0x36f6d9 0x36f952 0xbf786d 0x16be966 0x16be407 0x16217c0 0x1620db4 0x1620ccb 0x14ec879 0x14ec93e 0x2dfa9b 0x2a98 0x29f5 0x1) завершение вызвано выдачей исключения Текущий язык: авто; в настоящее время objective-c
Ниже приведен некоторый код для объяснения:
AllLocations.h & AllLocations.m (это основная таблица)
AllLocations.h
@interface AllLocations : UITableViewController
{
SQLiteDB *mySQLiteDB;
}
@property (nonatomic, strong) NSMutableArray *locationsArray;
AllLocations.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self performSegueWithIdentifier:@"segueToLocationDetails" sender:self];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"segueToLocationDetails"])
{
NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow];
NSInteger rowNumber = selectedIndexPath.row;
mySQLiteDB = (SQLiteDB *) [locationsArray objectAtIndex:rowNumber];
DetailsTVC *detailsTVC = [segue destinationViewController];
detailsTVC.detailsObject = mySQLiteDB;
}
}
DetailsTVC.h & DetailsTVC.m (это подробное представление таблицы)
DetailsTVC.h
@interface DetailsTVC : UITableViewController
@property (nonatomic, strong) SQLiteDB *detailsObject;
DetailsTVC.m
@implementation SpotDetailsTVC
@synthesize spotDetailsObject;
Примечание: я исключил весь код, который не был действительно важен или не имел отношения к вопросу.
Опять же: это отлично работает, если переход идет от исходного TableVeiwController к другому TableViewController. Он ломается только тогда, когда я встраиваю второй TVC в Nav Controller. Мне нужно знать, как заставить это работать с контроллером навигации на картинке. Заранее спасибо!