У меня есть два TableViewControllers с промежуточным промежуточным. Когда пользователь нажимает на ячейку в первом ТВЦ, они получают второй TVC. Segue является модальным, имеет идентификатор под названием «segueToLocationDetails» и передает вместе с ним объект. Вы можете думать о втором ТВК как о «детали» более или менее.performSegueWithIdentifier от TableViewController до второго TVC, встроенного в NavController, не работает
Мой код отлично работает в сценарии, описанном выше. Однако это ломается, как только я вставляю второй TVC в контроллер навигации.
Пример. Я работаю отлично. Затем я выделил второй TVC в IB, перейдя к Product | Вставить в | Контроллер навигации. Теперь второй TVC находится в контроллере Nav. Однако segue все же указывает на второй TVC. Я удаляю segue и снова подключаю его из первой ячейки TVC к контроллеру навигации, и обязательно дайте segue идентификатор. Беги снова, и он ломается! Ошибка ниже ...
2011-12-23 15: 30: 45,469 Project12 [5219: 11603] - [UINavigationController 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 0 x1620db4 0x1620ccb 0x14ec879 0x14ec93e 0x2dfa9b 0x2a98 0x29f5 0x1) завершение вызова throwing exceptionCurrent язык: авто; В настоящее время цель-с
Некоторые коды ниже, чтобы помочь объяснить:
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;
Примечание: я оставил все код, который не был действительно важен или имел отношение к вопросу.
Снова: Это работает отлично, если segue переходит из исходного TableVeiwController в другой TableViewController. Он ломается, когда я вставляю второй TVC в контроллер Nav. Мне нужно знать, как это сделать с Nav Controller на картинке. Заранее спасибо!
Хорошо, спасибо, но я получаю это предупреждение в настоящее время: файл: // Localhost/Users/Me/Desktop/Project13/AllLocations.m: warning: Semantic Issue: Несовместимые типы указателей, инициализирующие 'locationDetailsTVC * __ strong' с выражением типа 'UIViewController *' – ElasticThoughts
Попробуйте это в 'prepareForSegue: sender:', чтобы узнать, что такое destionationController: 'NSLog (@"% @ " , NSStringFromClass ([[segue destinationViewController] class])) ' –
2011-12-23 16: 32: 20.741 Project13 [5452: 11603] UINavigationController – ElasticThoughts