2012-04-03 8 views
0

Ich habe eine storyboard.Firing segues fehlgeschlagen

In diesem storyboard gibt es eine UITableViewController, die eine benutzerdefinierte Klasse, comMasterViewController verwendet.

Mit der storyboard, ich einfach per Drag & Drop von der UITableViewController in eine andere Szene.

Ein Modal segue wird erstellt. Ich ändere seinen Bezeichner zu "loadingDataSegue".

In meinem UITableViewController Code, Feuer ich diese Zeile:

[self performSegueWithIdentifier:@"loadingDataSegue" sender:nil]; 

I erhalten:

Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: 'Receiver (<comMasterViewController: 0x1b6290>) has no segue with 
identifier 'loadingDataSegue'' 

Was richtig angeschlossen nicht werden wird?

Danke für die Hilfe

EDIT: Ich bin ziemlich sicher, dass ich die TVC bin Verknüpfung und keine der Subviews. Mit Blick auf dem Storyboard-Code, sehe ich folgende:

<tableViewController storyboardIdentifier="comMasterViewController" 
    title="comMasterViewController" clearsSelectionOnViewWillAppear="NO" id="19" 
    userLabel="comMasterViewController" customClass="comMasterViewController" 
    sceneMemberID="viewController"> 

und am Boden, als Kind-Tag <tableViewController> und nicht zu einem seines Subviews:

<connections> 
    <segue destination="UCh-sM-lba" kind="modal" identifier="loadingDataSegue" 
     id="epP-jH-GLZ"/> 
</connections> 

Hier wird der Stacktrace ist:

Hier
0 CoreFoundation      
     0x363388a7 __exceptionPreprocess + 186 
1 libobjc.A.dylib      
     0x3758d259 objc_exception_throw + 32 
2 UIKit        
     0x31193a3f -[UIViewController performSegueWithIdentifier:sender:] + 154 
3 EZSystem 
     0x000bdfe7 -[comMasterViewController insertNewObject:] + 58 
4 CoreFoundation 
     0x362923fd -[NSObject performSelector:withObject:withObject:] + 52 
5 UIKit 
     0x30fc8faf -[UIApplication sendAction:to:from:forEvent:] + 62 
6 UIKit 
     0x3108e76b -[UIBarButtonItem(UIInternal) _sendAction:withEvent:] + 118 
7 CoreFoundation 
     0x362923fd -[NSObject performSelector:withObject:withObject:] + 52 
8 UIKit 
     0x30fc8faf -[UIApplication sendAction:to:from:forEvent:] + 62 
9 UIKit 
     0x30fc8f6b -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 30 
10 UIKit 
     0x30fc8f49 -[UIControl sendAction:to:forEvent:] + 44 
11 UIKit 
     0x30fc8cb9 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 492 
12 UIKit 
     0x30fc95f1 -[UIControl touchesEnded:withEvent:] + 476 
13 UIKit 
     0x30fc7ad3 -[UIWindow _sendTouchesForEvent:] + 318 
14 UIKit 
     0x30fc74c1 -[UIWindow sendEvent:] + 380 
15 UIKit 
     0x30fad83d -[UIApplication sendEvent:] + 356 
16 UIKit 
     0x30fad0e3 _UIApplicationHandleEvent + 5826 
17 GraphicsServices 
     0x3264f22b PurpleEventCallback + 882 
18 CoreFoundation 
     0x3630c523 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 38 
19 CoreFoundation 
     0x3630c4c5 __CFRunLoopDoSource1 + 140 
20 CoreFoundation 
     0x3630b313 __CFRunLoopRun + 1370 
21 CoreFoundation      
     0x3628e4a5 CFRunLoopRunSpecific + 300 
22 CoreFoundation 
     0x3628e36d CFRunLoopRunInMode + 104 
23 GraphicsServices 
     0x3264e439 GSEventRunModal + 136 
24 UIKit 
     0x30fdbe7d UIApplicationMain + 1080 
25 EZSystem 
     0x0009f963 main + 86 
26 EZSystem 
     0x0009f908 start + 40 

ist ein Bild: enter image description here

+0

Gibt es eine Möglichkeit, dass Sie die Instanz des TableView-Controllers mit 'alloc/initWithStyle' erstellen, anstatt sie vom Storyboard zu holen? Wenn das der Fall wäre, glaube ich nicht, dass der Übergang existiert. Wenn Sie Ihr Storyboard betrachten, sieht es nicht so aus, aber ich kann nichts anderes falsch sehen ... – jrturton

Antwort

1

Stellen Sie sicher, dass Sie dieses Segment nicht aus einer TableView-Zeile oder einem UIButton und stattdessen aus der VC selbst gezogen haben. Wenn Sie Zweifel haben, löschen Sie den Abschnitt und verbinden Sie ihn erneut. Überprüfen Sie auch auf Tippfehler (einschließlich Fall), wenn das Ihr Problem nicht löst.

0

Ich hatte dieses genaue Problem (die Symptome sowieso) und ElJay gab mir den Hinweis, den ich brauchte. Mein Problem wurde dadurch verursacht, dass sich der TableViewController in einem NavigationController befand und durch eine Alloc-Init und Push mit dem NavigationController geöffnet wurde. Dies war der Grund, warum [self performSegueWithIdentifier] nicht funktionierte. Mehr noch, das war auch der Grund dafür, dass der von mir aus der Zelle erstellte Übergang nicht funktionierte, also brauche ich jetzt nicht einmal den Teil [self perform ...], sondern preparedForSegue und alles funktioniert wie ein Zauber.
Ich hätte dies auf ElJay geantwortet, aber aus irgendeinem Grund kann ich nicht. Ich konnte ihm nur eine Stimme geben.