Appcelerator Titanium iOS模块访问事件存储

时间:2016-12-18 23:01:24

标签: titanium titanium-modules

我正在编写一个iOS模块来实现日历中的非现有功能。 我可以在iOS模块中访问应用程序的事件存储而不是自己创建吗?

1 个答案:

答案 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