0

我正在研究钛模块。

有点糊涂了TiViewProxy

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

如果我们没有编写任何这样的方法,当我们调用时会发生什么:

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

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

方法:

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

myModule.createView();

我正在处理内部的视图创建代码:

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

如果我没有传递任何论点,我的视图是如何创建的?它会起作用吗?

4

1 回答 1

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 模组开发指南中搜索“下划线”一词,它只出现一次,阅读更多:https ://wiki.appcelerator.org/display/guides/iOS+Module+Development+Guide )。

因为您没有定义 createView,所以平台会为您完成它,它createView()的处理方式与createView({}). 这是一个可选参数。这只是根据定义。

于 2013-01-11T04:39:17.380 回答