我正在研究钛模块。
关于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/