TiViewProxy和视图创建

时间:2013-01-10 13:13:28

标签: ios titanium titanium-mobile titanium-modules

我正在研究钛模块。

TiViewProxy 感到有点困惑。

为什么我们在ViewProxy中使用-(void)setColor_:(id)color这样的方法(方法中的_)?

如果我们没有写任何这样的方法,当我们打电话时会发生什么:

myModule.createView({
  color : 'red'
});

如果我没有在createView()方法上传递任何参数,我的视图创建代码将如何在我的模块上运行。

意思是:

我只是在我的app.js中创建我的视图,如:

myModule.createView();

我正在处理里面的视图创建代码:

-(void)setColor_:(id)color
{
}

如果我没有通过任何论证我的观点是如何创建的?它会起作用吗?

1 个答案:

答案 0 :(得分:3)

我将解释各种活动部件。它是平台的所有组成部分,因此您不知道它是如何工作的并不重要。但是,知道它为你做这件事很重要。所以......

当您调用myModule.createView()时,平台会查找模块中与某些约束匹配的子项。让我通过查看ti.pageflip模块来扩展该声明。 myModule的班级是TiPageflipModule。当我调用myModule.createView()时,平台将查找TiPageflipViewProxy,以便它可以实例化它。 TiPageflip来自模块的名称,减去“模块”。 “查看”来自createView。 “代理”被标记,因为这是我们从JavaScript到本机的方式。 TiPageflipViewProxy创建了原生视图TiPageflipView。代理处理JavaScript和本机视图之间的交互。到目前为止有意义吗?

公开属性的部分命名约定是它们以_为后缀。平台会查找这些方法,并在创建字典createView({ whatever: 'value' })以及属性view.whatever = 'value';或方法view.setWhatever('value')中调用每个方法。 (在iOS mod开发指南中搜索“下划线”一词,它只出现一次,以便阅读更多内容:https://wiki.appcelerator.org/display/guides/iOS+Module+Development+Guide)。

因为您没有定义createView,所以平台正在为您执行此操作,并且它处理createView()createView({})相同。这是一个可选的参数。这只是定义。