2013-06-23 2 views
1

Согласующего приложением из-за неперехваченное исключение 'NSInvalidArgumentException', причина: 'приемник() не имеет SEGUE с идентификатором 'MySegue''NSInvalidArgumentException 'причина:' приемник (<ViewController:>) не имеет SEGUE с идентификатором «MySegue

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
UIViewController *viewController; 
switch (indexPath.row) { 
    case AUDIO: 

     [self performSegueWithIdentifier:@"MySegue" sender:self]; 
     break; 
    case PDF: 
     viewController = [[[PDFExampleViewController alloc] init]autorelease]; 

     break; 
    case PROCEDURAL: 
     viewController = [[[ProceduralExampleViewController alloc] init] autorelease]; 
     break; 
    default: 
     viewController = [[[UIViewController alloc] init] autorelease]; 
} 
[self.navigationController pushViewController:viewController animated:YES]; 
    } 

Когда я нажимаю tableviewcell, то он должен отображать MySegue ViewController но выдает сообщение об ошибке, в которой прерывающие приложение из-за неперехваченного исключением «NSInvalidArgumentException», причина: «Receiver() не имеет SEGUE с идентификатором„MySegue“».

Зачем возникает ошибка при наличии идентификатора storyboardsegue.

Спасибо за помощь.

+0

Вы уверены, что этот контроллер был загружен из раскадровки? Попробуйте поместить 'NSLog (@" my storyboard =% @ ", self.storyboard);' вверху вашего метода. Записывает ли он раскадровку или записывает ее в нуль? –

ответ

3

Есть несколько вещей, которые вы могли бы попробовать сделать эту работу:

1) Попробуйте переименовать раскадровки, и убедитесь, чтобы установить основную раскадровку в настройках проекта, а в файле info.plist (Ключ «Main раскадровка имя файла базы ')

2) Попробуйте сделать чистый продукта (Product -> Clean)

3) Попробуйте удалить приложение из симулятора и запустить его снова (это может работать, если сделано после того, как вам вторая точка)

4) Если у вашего проекта есть локализация и несколько раскадровки для разных локалей, убедитесь, что раскадровки одинаковы.

5) Идентификаторы Segue чувствительны к регистру. Убедитесь, что вы вводите точный идентификатор (обычно я просто копирую его из Инспектора атрибутов и вставляю его в свой код, чтобы я чувствовал себя более безопасным)

6) Это может показаться очевидным - но на 100% уверен, что segue действительно существует! Иногда мы устаем :)

Надеюсь, это поможет.

+0

Что делать, если у меня есть две раскадровки – user1120133

+0

Один для iPad и один для iPhone или две локализованные раскадровки? – nemesis

+0

Что делать, если использовать как xib, так и раскадровку – user1120133