2015-01-26 40 views
0

我有一个使用ELCImagePicker的多图像采集器的钛应用程序。我设置了一切,它运作良好。如何使用钛将附加参数传递给ELCImagePicker控制器

我想将其他参数传递给模块,但由于参数不是全局的,它在使用过程中给我一个错误。

钛代码

var my_module = require('jp.kray.ti.ELCImagePicker'); 
my_module.loadImagePicker({ 

     iid:id, 
     domain:'http://myhost/upload.php', 
     success:function(data){ 
    ... 

的ObjectiveC代码

- (void)loadImagePicker:(id)args { 
    ENSURE_UI_THREAD(loadImagePicker,args); 
    ENSURE_SINGLE_ARG_OR_NIL(args,NSDictionary); 

    NSLog(@"Load ImagePicker\n"); 

    if (args != nil) { 
     // callbacks 
     if ([args objectForKey:@"success"] != nil) { 
      pickerSuccessCallback = [args objectForKey:@"success"]; 
      ENSURE_TYPE_OR_NIL(pickerSuccessCallback,KrollCallback); 
      [pickerSuccessCallback retain]; 
     } 

     if ([args objectForKey:@"cancel"] != nil) { 
      pickerCancelCallback = [args objectForKey:@"cancel"]; 
      ENSURE_TYPE_OR_NIL(pickerCancelCallback,KrollCallback); 
      [pickerCancelCallback retain]; 
     } 

    NSString *uploadUrl = [TiUtils stringValue:[args objectForKey:@"domain"]]; 
    NSString *iid = [TiUtils stringValue:[args objectForKey:@"iid"]]; 


    } 

    _albumController = [[ELCAlbumPickerController alloc] init]; 
    ELCImagePickerController *elcPicker = [[ELCImagePickerController alloc] initWithRootViewController:_albumController]; 
    [_albumController setParent:elcPicker]; 
    _albumController.assetFilter = kELCAlbumAllAssets; 
    _albumController.cellHeight = 75; 
    _albumController.titleForSelection = NSLocalizedString(@"Pick Something", @"Title for picking items"); 
    [elcPicker setDelegate:self];  

    TiApp *tiApp = [TiApp app]; 
    [tiApp showModalController:elcPicker animated:YES]; 

    [elcPicker release]; 
} 

问题代码在控制器

- (void)elcImagePickerController:(ELCImagePickerController *)picker didFinishPickingMediaWithInfo:(NSArray *)info { 
    NSLog(@"success didFinish:\n"); 

    if (pickerSuccessCallback != nil) { 
     id listener = [[pickerSuccessCallback retain] autorelease]; 

     NSMutableArray *images = [NSMutableArray array]; 
     for (NSDictionary *dict in info) { 
      UIImage *image = [dict objectForKey:UIImagePickerControllerOriginalImage]; 

      //Activate the status bar spinner 
      UIApplication* app = [UIApplication sharedApplication]; 
      app.networkActivityIndicatorVisible = YES; 

      //The image you want to upload represented in JPEG 
      //NOTE: the 'selectedPhoto' needs to be replaced with the UIImage you'd like to upload 
      NSData *imageData = UIImageJPEGRepresentation(image, 1); 

      //NOTE: Change this to the upload URL you're posting to 
      //NSString *uploadUrl = @"http://"+[NSString *domain]+"/upload.php"; 

      NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
      //[request setURL:[NSURL URLWithString:uploadUrl]]; 
      [request setURL:[NSURL URLWithString:@"http://localhost/upload.php"]]; 

      [request setHTTPMethod:@"POST"]; 

      NSMutableData *body = [NSMutableData data]; 

      NSString *boundary = @"---------------------------14737809831466499882746641449"; 
      NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary]; 
      [request addValue:contentType forHTTPHeaderField:@"Content-Type"]; 

      //The file to upload 
      [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
      [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"image\"; filename=\".jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
      [body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
      [body appendData:[NSData dataWithData:imageData]]; 
      [body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 

      // another text parameter 
      [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
      [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"parameter2\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
      [body appendData:[[NSString stringWithString:iid] <---- Here ----> 

它无法找到IID。我试图声明一个全局变量并使用loadImagePicker方法覆盖它,但它仍然在抱怨。

谢谢

回答

0

好的谢谢你的帮助,但我得到它的工作。 Objective C中的东西看起来有点不同,所以这里是我的解决方案。

#import "TiModule.h" 
#import "KrollCallback.h" 
#import "ELCAlbumPickerController.h" 

@interface JpKrayTiELCImagePickerModule : TiModule { 
    KrollCallback *pickerSuccessCallback; 
    KrollCallback *pickerErrorCallback; 
    KrollCallback *pickerCancelCallback; 
    ELCAlbumPickerController *_albumController; 
    NSString *iid; 

} 
@property(nonatomic,retain)NSString *iid; 
+(JpKrayTiELCImagePickerModule*)getInstance; 
@end 

和我的执行文件

@implementation JpKrayTiELCImagePickerModule 
//(nonatomic) 
@synthesize iid; 
@synthesize domain; 

static JpKrayTiELCImagePickerModule *instance = nil; 

+(JpKrayTiELCImagePickerModule *)getInstance 
{ 
    @synchronized(self) 
    { 
     if(instance==nil) 
     { 
      instance= [JpKrayTiELCImagePickerModule new]; 
     } 
    } 
    return instance; 
} 

我在哪里调用load方法

if ([args objectForKey:@"iid"] != nil) { 

      JpKrayTiELCImagePickerModule *obj=[JpKrayTiELCImagePickerModule getInstance]; 
      obj.iid= [TiUtils stringValue:@"iid" properties:args def:@"1234"]; 

     } 

,任何地点的代码,当我想用​​这些变量从Titaium应用。

JpKrayTiELCImagePickerModule *obj=[JpKrayTiELCImagePickerModule getInstance]; 
[NSString stringWithString:obj.iid] 

希望这可以帮助别人。

相关问题