Titaniumをdownloadし、installした後、新規module projectから新しいmoduleを作成し始める。wizardに従って、projectを作成した後、x-code projectが自動に生成する。しかし、作成されたx-code projectが直ぐにコンパイルができない、titanium.xcconfigファイルにtitaniumのpath環境設定の方を確認することがある。moduleにSecurity.frameworkを使う場合、module.xcconfigに
OTHER_LDFLAGS =$(inherited) -framework Securityを追加する。 整った後、moduleのObjective-C codeを作成します。
- [TiModule] defaultとして、TiModuleを承継したクラスが既に自動作成されている。簡単なmethodであれば、このクラスにmember methodを追加して、javascript側から下記の様に使われます。
- [TiProxy] moduleをオブジェクト指向に作りたい場合、TiProxyを承継してクラスを作る作成されたクラスがjavascript側にオブジェクトとして作成られる。referenceに従って、propertyが、member mothodが作った後こうやって利用する。
- [TiUIView & TiViewProxy] UIViewを作成したい場合、TiUIViewとTiViewProxyを承継して、二つのクラスを組合せて作成必要がある。UIViewを実装するのがTiUIViewを承継する方、呼ぶinterfaceとしてはTiViewProxyを承継する方を利用する。
var Module = require('xxxModuleId'); Module.xxxMethod(args);
var Module = require('xxxModuleId'); var proxy = Module.createXXXProxy(); proxy.xxxMethod(args);
- TiUIViewを承継したクラスにUIViewを定義し、frameSizeChangedに実装する。公開するinterface methodがTiViewProxyに追記する。
- ExXxxView.h
@interface ExXxxView : TiUIView { UiView * mainView; } @end
@implementation ExXxxView -(void)dealloc { RELEASE_TO_NIL(mainView); [super dealloc]; } -(void)frameSizeChanged:(CGRect)frame bounds:(CGRect)bounds { if (mainView == nil )mainView = new UiView; // do something } @endこれで、javascriptに利用
var fooView = Module.createView({ "color":"red", "width":20, "height":20 }); containerWindow.add(fooView);複数Viewがある場合、上記のdefault method createView()が使えないと思うので、customizeで自分のcreate methodを作る。
- ExXxxViewProxy.h
@interface ExXxxViewProxy : TiViewProxy { } // customize create method -(id)createXxxView:(id)args; @end
@implementation ExXxxViewProxy -(id) createXxxView:(id)args { // return the mainView defined in ExXxxView.h return [self view]; } @end又javascriptに利用
var fooView = Module.createXxxView({ "color":"red", "width":20, "height":20 }); containerWindow.add(fooView);create methodに渡したparametersをproxyにget/setを定義必要がありません、objective-cに直接取ることができる。
NSInteger intValue = [TiUtils intValue:[self.proxy valueForKey:@"key"]];
没有评论:
发表评论