Reputation: 2263
I have a storyboard
.
In this storyboard
there is a UITableViewController
that uses a custom class, comMasterViewController.
Using the storyboard
, I simply control-drag from the UITableViewController
to another scene.
A modal segue
is created. I change its identifier to "loadingDataSegue".
In my UITableViewController
code, I fire this line:
[self performSegueWithIdentifier:@"loadingDataSegue" sender:nil];
I receive:
Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: 'Receiver (<comMasterViewController: 0x1b6290>) has no segue with
identifier 'loadingDataSegue''
What isn't being hooked up properly?
Thanks for the help
EDIT: I am pretty sure I am linking the TVC, and not any of the subviews. Looking at the storyboard code, I see the following:
<tableViewController storyboardIdentifier="comMasterViewController"
title="comMasterViewController" clearsSelectionOnViewWillAppear="NO" id="19"
userLabel="comMasterViewController" customClass="comMasterViewController"
sceneMemberID="viewController">
and at the bottom, as a child tag to <tableViewController>
and not to any of its subviews:
<connections>
<segue destination="UCh-sM-lba" kind="modal" identifier="loadingDataSegue"
id="epP-jH-GLZ"/>
</connections>
Here is the stacktrace:
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
Here is an image:
Upvotes: 0
Views: 848
Reputation: 444
I had this exact problem(the symptoms anyway) and ElJay gave me the hint I needed. My problem was caused by the TableViewController being inside a NavigationController and it was opened by an alloc init and push using the NavigationController. This was the reason [self performSegueWithIdentifier] didn't work. Even more, this was also the reason the segue I created from the cell didn't work, so now I don't even need the [self perform...] part, just prepareForSegue and everything works like a charm.
I would have replied this to ElJay, but for some reason I can't. All I could do was give him a vote.
Upvotes: 0
Reputation: 14427
Make sure you didn't drag that Segue from a TableView Row or UIButton and instead from the VC itself. If you are in doubt, delete the segue and connect it again. Also check for typo's (including case) if that doesn't solve your issue.
Upvotes: 1