使用iOS模块构建本机视图并在Titanium中使用它们

时间:2012-05-07 10:07:16

标签: titanium appcelerator titanium-mobile appcelerator-mobile titanium-modules

我想构建一个iOS模块,其中我有一个带有.xib文件的viewController类。现在的问题是如何从我的钛代码中调用该视图。我知道有可用的视图代理,但由于文档不太好而不知道如何使用它们。

直到现在我已经创建了一个可以传递非图形数据的模块,但是如何从我的模块中获取View控制器。

我已经检查了appcelerator wiki,但这没有用。任何指导我的教程都会有所帮助

1 个答案:

答案 0 :(得分:4)

在iOS的mod dev指南中查看TiModdevguideDemoView.h / m和TiModdevguideDemoViewProxy.h / m:

https://github.com/appcelerator/titanium_modules/tree/master/moddevguide/mobile/ios/Classes

它简单地演示了视图和视图代理之间的关系。在这种情况下,它形成一个正方形。

您可以在此处看到它在JavaScript中使用: https://github.com/appcelerator/titanium_modules/blob/master/moddevguide/mobile/ios/example/demos/viewproxyDemo.js

一旦掌握了这一点,并且可以进行简单的观察,您就可以采取下一步来解决您的问题了。您需要将XIB转换为NIB。最简单的方法是将XIB添加到本机项目,编译项目,然后拉出NIB。将其转储到模块的资产中,然后从模块代码中引用它。遗憾的是,我没有任何使用NIB链接的公共资源,但我可以向您展示一个片段。 (我们维护的一些模块使用这种方法,所以我知道你可以成功地使它工作!Jira,Gigya,Urban Airship和其他人。)

NSBundle* bndl = [NSBundle bundleWithPath:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"ti.jira/1.0/assets/JMC.bundle"]];
JMCSketchViewController *sketchViewController = [[[JMCSketchViewController alloc] initWithNibName:@"JMCSketchViewController" bundle:bndl] autorelease];

请注意,我们通常不使用NIB,除非我们有来自第三方的强迫我们的东西。只是以命令性方式而不是以声明方式创建视图更容易。

您可以在我们的iOS mod开发指南中阅读有关视图和查看代理的更多信息。一旦你理解我在mod开发指南中链接的内容(并成功创建了你自己的),mod dev指南对你来说将更有用。 (顺便提一下,我对管道中的指南进行了一些更新,这将使其更容易理解)。 http://docs.appcelerator.com/titanium/2.0/index.html#!/guide/iOS_Module_Development_Guide

希望这会有所帮助。让我知道,如果有什么我可以进一步充实。你有一个小小的理解让你克服,但是一旦你放入一些肘部油脂,你就可以全速运行模块开发。