performSegueWithIdentifier от TableViewController ко второму TVC, встроенному в NavController, не работает

У меня есть два 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. Мне нужно знать, как заставить это работать с контроллером навигации на картинке. Заранее спасибо!

6
задан pad 23 December 2011 в 21:11
поделиться