我有storyboard
。
在这个storyboard
中有一个UITableViewController
使用自定义类comMasterViewController。
使用storyboard
,我只需控制 - 从UITableViewController
拖动到另一个场景。
创建了一个模态segue
。我将其标识符更改为“loadingDataSegue”。
在我的UITableViewController
代码中,我触发了这一行:
[self performSegueWithIdentifier:@"loadingDataSegue" sender:nil];
我收到:
Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: 'Receiver (<comMasterViewController: 0x1b6290>) has no segue with
identifier 'loadingDataSegue''
什么没有被正确连接?
感谢您的帮助
修改 我很确定我正在连接TVC,而不是任何子视图。查看故事板代码,我看到以下内容:
<tableViewController storyboardIdentifier="comMasterViewController"
title="comMasterViewController" clearsSelectionOnViewWillAppear="NO" id="19"
userLabel="comMasterViewController" customClass="comMasterViewController"
sceneMemberID="viewController">
位于底部,作为<tableViewController>
的子标记,而不是其任何子视图:
<connections>
<segue destination="UCh-sM-lba" kind="modal" identifier="loadingDataSegue"
id="epP-jH-GLZ"/>
</connections>
这是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
这是一张图片:
答案 0 :(得分:1)
确保您没有从TableView Row或UIButton中拖动Segue,而是从VC本身拖动。如果您有疑问,请删除segue并再次连接。如果这不能解决您的问题,还要检查拼写错误(包括案例)。
答案 1 :(得分:0)
我有这个确切的问题(无论如何的症状)和ElJay给了我需要的提示。我的问题是由于TableViewController在NavigationController中引起的,它是由alloc init打开并使用NavigationController推送的。这就是[self performSegueWithIdentifier]无效的原因。更重要的是,这也是我从单元格创建的segue不起作用的原因,所以现在我甚至不需要[self perform ...]部分,只需准备ForSegue,一切都像魅力一样。
我会回复给ElJay,但出于某种原因,我不能。我所能做的就是给他投票。