【问题标题】:Appcelerator Titanium iOS module access event storeAppcelerator Titanium iOS 模块访问事件存储
【发布时间】:2016-12-18 23:01:24
【问题描述】:

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

【问题讨论】:

    标签: titanium titanium-modules


    【解决方案1】:

    典型的模式是将事件侦听器添加到模块返回的某个代理。当某些事件发生时,您希望从您的模块中发出由 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

    【讨论】:

    • 感谢您的回复道森,我想我的问题还不清楚。在我的本机模块中,我想访问 Titanium SDK 创建的事件存储以自定义更新事件。事件存储在这里声明:github.com/appcelerator/titanium_mobile/blob/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    相关资源
    最近更新 更多