我试图通过使用委托从ViewController
拨打AppDelegate
的segue。我想确保在执行segue之前存储xmppRoster
。有一个错误说:
"因未捕获的异常而终止应用 ' NSInvalidArgumentException',原因:' Receiver()没有带标识符的segue' segueForList''""
我确定segueForList
是正确的segue标识符,因为代码
[self performSegueWithIdentifier:@"segueForList" sender:self]
在不使用委托时有效。
segue内置于一个故事板并连接到ViewController,我现在无法发布图片,因为我的声誉不够,对不起
AppDelegate.h:
@protocol friendListSegue
- (void) ListSegue;
@end
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (assign,nonatomic) id<friendListSegue> delegate;
@end
在AppDelegate.m中,系统完成存储时会自动调用此方法:
- (void)xmppRosterDidEndPopulating:(XMPPRoster *)sender
{
ViewController * view0=[[ViewController alloc] init];
self.delegate = view0;
[self.delegate ListSegue];
NSLog(@"didStored");
}
ViewController.m:
- (void) ListSegue{
NSLog(@"segue_List");
[self performSegueWithIdentifier:@"segueForList" sender:self];
}
答案 0 :(得分:0)
分配和初始化新的ViewController不会在storyboard中提供任何数据。您需要从笔尖加载ViewController。
How can I load storyboard programmatically from class?
我仍然要质疑你在做什么。即使你想要在执行segue之前等到你的名单之后,最好还是让执行segue的ViewController成为xmppRoster的委托,这样你就可以从实际拥有segue的对象中执行segue。 / p>