Подтвердить что ты не робот

NSInvalidArgumentException - приемник не имеет идентификатора с идентификатором

Я пробовал все часами, и ничего не работало. Я пытаюсь переходить между двумя контроллерами представлений, от одного tableViewController до другого tableViewController. Segue подключается к верхнему уровню, а не к tableviewcell. Идентификатор, который был установлен в Xcode, идентичен идентификатору, который используется в коде (копировать и вставлять). Он работал отлично прошлой ночью, но теперь я не могу заставить его переходить без сбоев.

вот методы, в которых вызов называется

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    self.photoList = [FlickrFetcher photosInPlace:[self.topPlacesList objectAtIndex:indexPath.row] maxResults:50];
    NSLog(@"photolist %@", self.photoList);

    NSLog(@"here");

    [self performSegueWithIdentifier:@"segue1" sender:self];
    NSLog(@"here");
}


-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([segue.identifier isEqualToString:@"segue1"])
    {
        PhotosTableViewController *photosTVC = segue.destinationViewController;
        photosTVC.photoList = self.photoList;
    }
}

вот отчет об ошибке

2012-08-08 15: 28: 39.093 Лучшие места [512: f803] * Завершение приложения из-за неотображенного исключения "NSInvalidArgumentException", причина: "Получатель (PlacesTableViewController: 0x6887ff0) не имеет сеанса с идентификатором" segue1 "" " * Первый стек вызовов броска: (0x13c0052 0x1551d0a 0xde24b 0x3efd 0xa771d 0xa7952 0x92f86d 0x1394966 0x1394407 0x12f77c0 0x12f6db4 0x12f6ccb 0x12a9879 0x12a993e 0x17a9b 0x2778 0x26d5) завершение вызова throwing exception

вот скриншот раскадровки http://s14.postimage.org/66wf13q4h/Screen_Shot_2012_08_08_at_3_22_10_PM.png

4b9b3361

Ответ 1

Я исправил это! 1. убедитесь, что в Xcode выбрана правильная раскадровка (если вы переименуете раскадровку, измените ее в резюме проекта). затем удалите приложение на симуляторе и перезапустите

Ответ 2

Мне удалось исправить это, запустив "clean" в меню "Product" в Xcode и сбросив содержимое и настройки в симуляторе.

Ответ 3

У меня была такая же проблема. В моем инициализаторе - (id)initWithCoder:(NSCoder *)aDecoder я делал self = [super init];, когда должен был сделать self = [super initWithCoder:aDecoder];. Когда я исправил это, все работало, как ожидалось.

Ответ 4

У меня была такая же проблема, и я боролся с ней часами. Ответ Stackmonster решил мою проблему (переименовал раскадровку), но я не понял, почему он решил проблему.

Я обнаружил, что когда я сменил элемент на раскадровке (добавил ярлык или изменил цвет фона), это не отразилось на симуляторе - я не использовал раскадровку, которую я мог видеть в xcode, но более старая версия раскадровка. Мне пришлось переименовать раскадровку в навигаторе проекта, а также переименовать его в info.plist (в поддерживающих файлах), и появился мой ярлык, а также цвет фона и работа segue.

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

Ответ 5

В Interface Builder вам нужно установить идентификатор segue на segue1, который является секцией, подключенной к вашему контроллеру вида.

Ответ 6

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

Ответ 7

У этой проблемы была развязка. Наконец понял, что я потерял свой идентификатор, когда я заменил контроллер вида на раскадровке. Я снова добавил его, нажав на разматывание в контуре документа (боковая панель раскадровки), а затем в инспекторе атрибутов добавьте для него идентификатор.

Если ничего не работает, в аренду в отношении разматывания, вы можете позвонить

[self dismissViewControllerAnimated:YES completion:nil];

Ответ 8

У меня была та же проблема, что и новый VC в качестве подкласса другого контроллера представления. Он должен быть подклассом UIViewController или UITableViewController. Проверьте файл заголовка, импортируется ли UIKIT или нет.