2013-01-10 22 views
0

我正在使用鈦模塊。TiViewProxy和視圖創建

有點困惑的TiViewProxy

爲什麼我們在ViewProxy中使用-(void)setColor_:(id)color這樣的方法(_方法)?

如果我們沒有寫任何這樣的方法,當我們要求會發生什麼:

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

如果我沒有通過任何參數對我createView()方法,我認爲創建代碼將如何我的模塊上工作。

方式:

我只是創建我的觀點,我app.js,如:

myModule.createView(); 

我管內的視圖創建代碼:

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

如果我我沒有通過任何觀點如何創建我的觀點?它會起作用嗎?

回答

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開發指南中搜索單詞「underscore」,它只出現一次,閱讀更多:https://wiki.appcelerator.org/display/guides/iOS+Module+Development+Guide)。

因爲您沒有定義createView,所以平臺正在爲您做,它處理createView()的方法與createView({})的方法相同。這是一個可選的參數。這只是定義。

+0

非常感謝您的回答:) –

+0

只是一個問題:如果我沒有通過任何參數會調用我的'setColor_'方法嗎? –

+0

當你知道它表現某種特定的方式時,你最好不要引誘我說錯話。 :P否,setColor_不應被調用。 –