我已经在 MainAppDelegate.m 中使用以下内容找到了在XMPPRoster中接受订阅请求的方法:
- (void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence
{
NSString *presenceType = [presence type];
if ([presenceType isEqualToString:@"subscribe"]) {
[xmppRoster acceptPresenceSubscriptionRequestFrom:[presence from] andAddToRoster:YES];
}
但是,我无法通过点击按钮发送好友请求。我面临的主要问题是我的新朋友添加表单位于 ViewController.m 类中,而不是 MainAppDelegate.m 。如何从 ViewController.m 访问XMPPRoster方法?我是否必须重新声明XMPPRoster的对象,或者我可以以某种方式重用已在 MainAppDelegate.m 文件中实例化的对象?
答案 0 :(得分:1)
重用已经存在的XMPPRoster对象应该足够了。为此,您可以为ViewController.m编写自定义init方法,例如
- initWithRoster:(XMPPRoster *)roster
{
self = [super initWithNibName:@"nibName" bundle:nil];
...
}
然后将名单分配给ViewController的实例变量或属性。然后,可以在加载和加载视图时访问XMPPRoster对象。
或者,您可以向ViewController添加XMPPRoster属性,并在实例化视图控制器之后但在显示控制器之前从MainAppDelegate分配名单对象。但我更喜欢第一种解决方案。