射击失败

时间:2012-04-03 00:09:50

标签: objective-c ios uitableview storyboard

我有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

这是一张图片: enter image description here

2 个答案:

答案 0 :(得分:1)

确保您没有从TableView Row或UIButton中拖动Segue,而是从VC本身拖动。如果您有疑问,请删除segue并再次连接。如果这不能解决您的问题,还要检查拼写错误(包括案例)。

答案 1 :(得分:0)

我有这个确切的问题(无论如何的症状)和ElJay给了我需要的提示。我的问题是由于TableViewController在NavigationController中引起的,它是由alloc init打开并使用NavigationController推送的。这就是[self performSegueWithIdentifier]无效的原因。更重要的是,这也是我从单元格创建的segue不起作用的原因,所以现在我甚至不需要[self perform ...]部分,只需准备ForSegue,一切都像魅力一样。
我会回复给ElJay,但出于某种原因,我不能。我所能做的就是给他投票。