我正在研究钛模块。

关于TiViewProxy有点困惑。

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

如果我们没有编写任何此类方法,则在调用时会发生什么:

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


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

手段:

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

myModule.createView();


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

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


如果我没有传递任何参数,如何创建视图?能行吗?

最佳答案

我将解释各种运动部件。它都是平台的一部分,因此并不重要,您知道它的工作原理。但是,知道它可以为您做到这一点很重要。所以...

当您调用myModule.createView()时,平台将查找与某些约束匹配的模块子代。让我通过查看ti.pageflip模块来扩展该语句。 myModule的课程是TiPageflipModule。当我调用myModule.createView()时,平台将查找TiPageflipViewProxy,以便可以实例化它。 TiPageflip来自模块的名称,减去“ Module”。 “视图”来自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({})相同。这是一个可选参数。这只是定义。

关于ios - TiViewProxy和 View 创建,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14258763/

10-11 14:12