我正在编写一个iOS模块来实现日历中的非现有功能。 我可以在iOS模块中访问应用程序的事件存储而不是自己创建吗?
答案 0 :(得分:0)
典型的模式是将事件侦听器添加到模块返回的某些代理中。当某些事件发生时,您希望从模块中发出要由JavaScript代码处理的事件,您可以这样做。
您的JS可以通过调用模块上的方法来注册您的回调:
-(void)registerCallbacks:(id)args
{
ENSURE_SINGLE_ARG(args, NSDictionary);
NSLog(@"[KROLLDEMO] registerCallbacks called");
// Save the callback functions and retain them
successCallback = [[args objectForKey:@"success"] retain];
cancelCallback = [[args objectForKey:@"cancel"] retain];
requestDataCallback = [[args objectForKey:@"requestData"] retain];
NSLog(@"[KROLLDEMO] Callbacks registered");
}
...由你的JS调用:
var yourModule = require('your.module');
yourModule.registerCallbacks({ success: ..., etc })
...当你的模块想让你的JS知道发生了什么时:
if (successCallback != nil){
NSMutableDictionary *event = [NSMutableDictionary dictionary];
[event setObject:@"foo" forKey:@"message"];
[event setObject:@"bar" forKey:@"title"];
[self _fireEventToListener:@"success" withObject:event listener:successCallback thisObject:nil];
}
在此处查看更多示例: https://github.com/appcelerator-modules/ti.moddevguide/search?utf8=%E2%9C%93&q=fire