Partage
  • Partager sur Facebook
  • Partager sur Twitter

[iOS] Récupérer une valeur

Sujet résolu
    9 août 2012 à 12:25:39

    Je me permets d'écrire car je ne trouve pas de solution.
    Dans la page ViewControllerScan, je reçois un nombre que je souhaite passé dans la page ViewControllerData afin de le placer dans l'url. Savez-vous comment faire car j'ai essayé de faire des méthodes de retour, etc.. mais pas moyen de récupérer ce chiffre…

    Merci encore. Bonne journée.

    #import "ViewControllerScan.h"
    
    @interface ViewControllerScan ()
    @end
    
    @implementation ViewControllerScan
    @synthesize resultImage, resultText;
    
    
    
    - (IBAction) scanButtonTapped
    {
        
        // ADD: present a barcode reader that scans from the camera feed
        ZBarReaderViewController *reader = [ZBarReaderViewController new];
        reader.readerDelegate = self;
        reader.supportedOrientationsMask = ZBarOrientationMaskAll;
        
        ZBarImageScanner *scanner = reader.scanner;
        // TODO: (optional) additional reader configuration here
        
        
        [scanner setSymbology: ZBAR_QRCODE
                       config: ZBAR_CFG_X_DENSITY
                           to: 2];
        
        [scanner setSymbology:ZBAR_QRCODE 
                       config:ZBAR_CFG_Y_DENSITY 
                           to:2];
        
        reader.readerView.zoom = 1;
        
        reader.scanCrop= CGRectMake(0, 0, 1, 1);
        
        // present and release the controller
        [self presentModalViewController: reader
                                animated: YES];
        
        NSLog(@"je suis là");
    }
    
    - (void) imagePickerController: (UIImagePickerController*) reader didFinishPickingMediaWithInfo: (NSDictionary*) info
    {
        
        id <NSFastEnumeration> results =
        [info objectForKey: ZBarReaderControllerResults];
        assert(results);
        
        UIImage *image = [info objectForKey: UIImagePickerControllerOriginalImage];
        assert(image);
        if(image)
            resultImage.image = image;
        
        ZBarSymbol *symbol = nil;
        for(symbol in results){
            resultText.text = symbol.data;
            break;
        }
        
        NSString* resultat = resultText.text;
      
        
        NSLog(@"data=%@\n", symbol.data);
        NSLog(@"TEXTE = %@", resultText.text);
       
        NSLog(@"ESSAI = %@", resultat);
        
        // ADD: dismiss the controller (NB dismiss from the *reader*!)
        [reader dismissModalViewControllerAnimated: YES];
    }
    
    
    
    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        if (self) {
            // Custom initialization
        }
        return self;
    }
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    	// Do any additional setup after loading the view.
    }
    
    - (void)viewDidUnload
    {
        [super viewDidUnload];
        // Release any retained subviews of the main view.
    }
    
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    {
        return (interfaceOrientation == UIInterfaceOrientationPortrait);
    }
    
    @end
    


    #import "ViewControllerData.h"
    #import "ViewControllerDataDetail.h"
    #import "Data.h"
    
    @interface ViewControllerData ()
    
    @end
    
    @implementation ViewControllerData
    
    
    
    - (void)loadTimeline {
    
        // Charger le modèle via RestKit
        RKObjectManager* objectManager = [RKObjectManager sharedManager];
        objectManager.client.baseURL = [RKURL URLWithString: @"http://localhost:8080/CulturalNetworksMuseumServer/resources"];
        [objectManager loadObjectsAtResourcePath:@"/compositecards/1/artifactcards" delegate:self];
    }
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
     
        RKLogConfigureByName("RestKit/Network*", RKLogLevelTrace);
        RKLogConfigureByName("RestKit/ObjectMapping", RKLogLevelTrace);
        
        // Initialisation de RestKit
        RKObjectManager* objectManager = [RKObjectManager managerWithBaseURLString:@"http://localhost:8080/CulturalNetworksMuseumServer/resources"];
        
        // Active la gestion automatique de l'indicateur de l'activité réseau
        objectManager.client.requestQueue.showsNetworkActivityIndicatorWhenBusy = YES;
        
        //Configuration du mappage de l'objet Data
        RKObjectMapping * dataMapping = [RKObjectMapping mappingForClass:[Data class]];
        [dataMapping mapKeyPath:@"id" toAttribute:@"ac_id"];
        [dataMapping mapKeyPath:@"file" toAttribute:@"ac_file"];
        [dataMapping mapKeyPath:@"typefile" toAttribute:@"ac_typefile"];
        [dataMapping mapKeyPath:@"author" toAttribute:@"ac_author"];
        [dataMapping mapKeyPath:@"titleTopic" toAttribute:@"ac_titleTopic"];
        [dataMapping mapKeyPath:@"year" toAttribute:@"ac_year"];
        [dataMapping mapKeyPath:@"technical" toAttribute:@"ac_technical"];
        [dataMapping mapKeyPath:@"supportMedia" toAttribute:@"ac_supportMedia"];
        [dataMapping mapKeyPath:@"format" toAttribute:@"ac_format"];
        [dataMapping mapKeyPath:@"owner" toAttribute:@"ac_owner"];
        [dataMapping mapKeyPath:@"collection" toAttribute:@"ac_collection"];
        [dataMapping mapKeyPath:@"remarks" toAttribute:@"ac_descritpionRemarks"];
        
        
        // Permet de mapper l'objet Data avec la source de ce dernier
        [objectManager.mappingProvider setObjectMapping:dataMapping forResourcePathPattern:@"/compositecards/1/artifactcards"];
        
        NSString * test = @"Mappage dans la View Controller";
        NSLog(@"%@",test);
        
        
        // mise en place d'une TableView
        _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 480-64) style:UITableViewStylePlain];
        _tableView.dataSource = self;
        _tableView.delegate = self;
        _tableView.backgroundColor = [UIColor clearColor];
        _tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
        [self.view addSubview:_tableView];
        
        // appel de la fonction qui charge le modèle
        [self loadTimeline];
        
        
    }
    
    #pragma mark RKObjectLoaderDelegate methods
    - (void)request:(RKRequest *)request didLoadResponse:(RKResponse *)response
    {
        NSLog(@"Loaded payload: %@", [response bodyAsString]);
    }  
    
    /**
     ** Permet de charger la liste des adresses provenant des services Rest sous forme de tableau
     ** Remplir le tableau _data (local) avec le tableau d'objects
     ** Mettre à jour la TableView
     **/
    - (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects {
        NSLog(@"Load collection of ArtifactCards: %@", objects);
        _data = [NSArray arrayWithArray:objects];
        [_tableView reloadData];
    }
    
    - (void)objectLoader:(RKObjectLoader*)objectLoader didFailWithError:(NSError*)error {
        UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Error" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
        NSLog(@"Hit error: %@", error);
    }
    
    #pragma mark UITableViewDataSource methods
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
        return 1;
    }
    
    - (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section {
        return [_data count];
    }
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        NSString* reuseIdentifier = @"Artifact Cell";
        UITableViewCell* cell = [_tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
        if (nil == cell) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:reuseIdentifier];
            cell.textLabel.numberOfLines = 0;
            cell.textLabel.backgroundColor = [UIColor clearColor];
        }
        Data *data = [_data objectAtIndex:indexPath.row];
        
        //[cell.textLabel setText:[NSString stringWithFormat:@"%@ %@", address.ad_lat, address.ad_lon]];
        [cell.textLabel setText:[NSString stringWithFormat:@"%@", data.ac_titleTopic]];
        [cell.detailTextLabel setText:[NSString stringWithFormat:@"%@", data.ac_author]];
    //    [cell.detailTextLabel setText:[NSString stringURL:@"%@", data.ac_file]];
    //    NSString *stringURL = @"%@", data.ac_file;
    //    NSURL *url = [NSURL URLWithString:stringURL];
    //    [[UIApplication sharedApplication] openURL:url];
        
        
        return cell;
        
    }
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
        NSURL *uneImage = [NSURL URLWithString:@"http://localhost/CulturalNetworksMuseumClient/upload/50190d84bf34aCN.png"];
        
        
        
        UIImageView * monImage = [[UIImageView alloc] initWithFrame: CGRectMake(20, 20, 260, 300)];
        //UIImage *logoImage = [UIImage imageNamed:@"Audio.png"];
        UIImage *logoImage = [UIImage imageWithData: [NSData dataWithContentsOfURL:uneImage]];
        monImage.image = logoImage;
        
       
        [monImage setBackgroundColor: [UIColor lightGrayColor]];
        
        [self.view addSubview:monImage];
        
    //    UIView * red = [[UIView alloc] initWithFrame:CGRectMake(10, 10, 300, 300)];
    //    [red setBackgroundColor:[UIColor lighGrayColor]];
    //    [self.view addSubview:red];
        
    //    ViewControllerDataDetail *detail = [ViewControllerDataDetail alloc];
    //    
    //    
    //    UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"BRavo" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    //    [alert show];
    //    
    //    
    //    //verifier si il y a animated:YES cela permet de rajouter un effet glissant
    //    [self.navigationController pushViewController: detail  animated:YES];
    }
    
    
    - (void)viewDidUnload
    {
        [super viewDidUnload];
    }
    
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    {
        return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
    }
    
    
    @end
    
    • Partager sur Facebook
    • Partager sur Twitter
      10 août 2012 à 0:35:50

      Bonsoir,

      J'ai rajouté le tag dans le titre de ton sujet afin qu'il soit conforme aux règles du forum mobile.
      Merci de faire attention à l'avenir.
      • Partager sur Facebook
      • Partager sur Twitter
      Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
        10 août 2012 à 1:31:19

        Quel est le lien entre ces deux controleurs? Car tu peux passer une valeur en utilisant la methode performSegue (iOS5 requis).
        Sinon tu peux utiliser les KVO, (ya des tuto sur le site d'apple).
        • Partager sur Facebook
        • Partager sur Twitter
          15 août 2012 à 22:06:51

          Il n'y a réellement de lien… le premier onglet scan un qr-code.
          et j'aimerai passer la valeur contenu dans ce qr-code dans le deuxième onglet.
          Mais je n'y arrive pas.
          • Partager sur Facebook
          • Partager sur Twitter
            16 août 2012 à 2:17:53

            Dans ce cas tu peux utiliser la classe NSNotificationCenter.
            Tu trouveras des exemples ici: https://developer.apple.com/library/ma [...] eference.html
            Tu t'abonnes dans ton deuxième onglet et tu poste la notification dans ton premier onglet.
            Ca marchera mais bon ya surement plus simple et vu que je connais pas l'archi de ton appli :s
            • Partager sur Facebook
            • Partager sur Twitter
              16 août 2012 à 9:53:36

              Eh bien voilà ce que j'ai fait pour le moment. J'ai suivi un exemple mais ça ne fonctionne pas et je ne sais pas pourquoi.
              ViewControllerScan.h
              #import <UIKit/UIKit.h>
              
              
              @interface ViewControllerScan : UIViewController <ZBarReaderDelegate, ViewControllerDataDelegate>
              
              
              @property (nonatomic, retain) IBOutlet UIImageView *resultImage;
              @property (nonatomic, retain) IBOutlet UITextView *resultText;
              - (IBAction) scanButtonTapped;
              
              @end
              

              ViewControllerScan.m
              - (void) imagePickerController: (UIImagePickerController*) reader didFinishPickingMediaWithInfo: (NSDictionary*) info
              {
                  
                  id <NSFastEnumeration> results =
                  [info objectForKey: ZBarReaderControllerResults];
                  assert(results);
                  
                  UIImage *image = [info objectForKey: UIImagePickerControllerOriginalImage];
                  assert(image);
                  if(image)
                      resultImage.image = image;
                  
                  ZBarSymbol *symbol = nil;
                  for(symbol in results){
                      resultText.text = symbol.data;
                      break;
                  }
                  
                  NSString* resultat = resultText.text;
                  
                  NSNumber* resultatChiffre = [NSNumber numberWithInt: 1];
                  NSNumber *tester = [NSNumber numberWithInt: resultat.intValue];
                
                  
                  NSLog(@"data=%@\n", symbol.data);
                  NSLog(@"TEXTE = %@", resultText.text);
                 
                  NSLog(@"ESSAI = %@", tester);
                  
                  NSLog(@"TEST = %d", resultatChiffre.intValue);
                  
                  // ADD: dismiss the controller (NB dismiss from the *reader*!)
                  [reader dismissModalViewControllerAnimated: YES];
                  
                  ViewControllerData *controller = [[ViewControllerData alloc] initWithNibName:@"ViewControllerData" bundle:nil];
                  // Passage du nombre
                  [controller setMyNumber:[NSNumber numberWithInt: 2]];
                  
              }
              


              ViewControllerData.h
              #import <UIKit/UIKit.h>
              #import "RestKit/RestKit.h"
              
              @class ViewControllerData;
              
              @protocol ViewControllerDataDelegate
              @end
              
              @interface ViewControllerData : UIViewController<UIAlertViewDelegate,UITableViewDelegate, UITableViewDataSource,RKObjectLoaderDelegate>
              {
                  UITableView* _tableView;
                  NSArray* _data;
              }
              
              // Variable pour le passage du nombre (readwrite permet de faire un getter et setter automatiquement)
              @property (readwrite) NSNumber *myNumber;
              
              @end
              


              ViewControllerData.m

              #import "ViewControllerData.h"
              #import "ViewControllerDataDetail.h"
              #import "Data.h"
              
              @interface ViewControllerData ()
              
              @end
              
              @implementation ViewControllerData
              // Nécessaire pour faire le getter et setter
              @synthesize myNumber;
              
              
              
              
              - (void)loadTimeline {
              
                  // Charger le modèle via RestKit
                  RKObjectManager* objectManager = [RKObjectManager sharedManager];
                  objectManager.client.baseURL = [RKURL URLWithString: @"http://localhost:8080/CulturalNetworksMuseumServer/resources"];
                  [objectManager loadObjectsAtResourcePath:@"/compositecards/1/artifactcards" delegate:self];
              }
              
              - (void)viewDidLoad
              {
                  [super viewDidLoad];
                  
                  
                  // Affichage du nombre
                  NSLog(@"Mon nombre : %i", [myNumber intValue]);
                  NSLog(@"Mon nombre = %@", myNumber);
              }
              


              Le but est en de remplacer le 1 qui se trouve dans l'url par la valeur de myNumber.

              Je vais essayer de ce que tu m'as dit mais c'est vrai que ça à l'air compliqué pour si peu de chose…
              mais si ça fonctionne je ne demande pas plus...
              • Partager sur Facebook
              • Partager sur Twitter
                17 août 2012 à 3:01:08

                Je vois pas ou tu appelles ton controller Data (tu set la variable dans ta methode picker mais ca sert à rien car fais aucun push\modal après).
                Peux-tu m'expliquer grosso modo l'architecture de ton appli?
                • Partager sur Facebook
                • Partager sur Twitter
                  17 août 2012 à 9:32:47

                  alors j'ai une page de login qui permet d'arriver sur les TabBar. le premier "ViewControllerScan" on peut scanner et le deuxième "ViewControllerData" reçoit des résultats de services Restful que j'ai crées.
                  La partie scan, scanne des QR-Code qui possèdent un chiffre et ce chiffre devrait être passer "automatiquement" sur le deuxième onglet. Ce chiffre sera ensuite mis dans l'URL permettant d'accéder aux données selon le QR-Code scanner.

                  Voici une image du story : <image>http://www.siteduzero.com/upload-216-396997.html?dir=1&parent_id=7636632&mid_img=395638&textarea=texte</image>
                  • Partager sur Facebook
                  • Partager sur Twitter

                  [iOS] Récupérer une valeur

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown