Alhazred Inviato 4 Luglio 2011 Segnala Condividi Inviato 4 Luglio 2011 Devo realizzare una semplice app che mostri nella view principale un campo di testo e un pulsante. QUando l'utente digita un testo e preme il pulsante deve partire una richiesta POST verso uno script php che si trova su un mio sito, lo script effettua una ricerca sul db e restituisce i risultati all'app. Fin qui so fare tutto. Il mio problema è la gestione delle view. Dopo aver inviato i dati dalla view principale, come dico all'app di mostrare i dati ricevuti indietro su una nuova view? La view la farò col layout a tabella. Che tipo di progetto devo scegliere? View o Window based? Link al commento Condividi su altri siti Altre opzioni di condivisione...
fra.makaveli Inviato 4 Luglio 2011 Segnala Condividi Inviato 4 Luglio 2011 Io farei una Navigation-based Application. una volta ottenuta la vista dei risultati ne fai un push nell navigation controller. Link al commento Condividi su altri siti Altre opzioni di condivisione...
Alhazred Inviato 5 Luglio 2011 Autore Segnala Condividi Inviato 5 Luglio 2011 Le view mi sono ancora un po' ostiche da capire. Dunque: creo un nuovo progetto Navigation-based, questo però mi mostra come prima cosa subito la tabella o no? Io dovrei prima mostrare una vista con un text field dove inserire una stringa e un pulsante, cliccando sul pulsante parte una richiesta e ricevo dei dati in risposta, solo a questo punto devo mostrare la tabella popolata con questi dati. Mi spiegheresti come procedere? Ovviamente non ti chiedo il codice, ma le linee guida. Link al commento Condividi su altri siti Altre opzioni di condivisione...
fra.makaveli Inviato 5 Luglio 2011 Segnala Condividi Inviato 5 Luglio 2011 Allora... quel template ti crea un MainWindow.xib con soltanto il navigation controller e il "link" a RootViewController.xib Quello che puoi fare è: elimina RootViewController.xib, .h e .m Poi.. in MainWindow.xib hai nell'elenco di oggetti istanziati un Navigation Controller, "unfoldalo (triangolino )", dentro hai Navigation Bar e RootViewController. Semplicamente cancella RootViewController e aggiungi (sempre dentro il Navigation Controller) una tua ViewController. Tutto finito. Semplicemente poi quando vuoi visualizzare la vista nuova (tabella) devi accedere al navigation controller (mi sembra sia una property della tua nuova vista) e chimare - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated Link al commento Condividi su altri siti Altre opzioni di condivisione...
Alhazred Inviato 5 Luglio 2011 Autore Segnala Condividi Inviato 5 Luglio 2011 Provo a descrivere meglio la situazione attuale di ciò che ho, magari viene più facile darmi indicazioni su come proseguire. Il progetto è di tipo Window-based, si chiama RecuperoInfo. Nel file RecuperoInfoViewController.m ho questa funzione che invia la richiesta e riceve la risposta - (IBAction)performSearch:(id)sender { NSMutableURLRequest *richiesta = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.sito.it/iosphp/responder.php"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:120.0]; [richiesta setHTTPMethod:@"POST"]; [richiesta setHTTPBody:[[NSString stringWithFormat:@"search=%@", textInput.text] dataUsingEncoding:NSASCIIStringEncoding]]; NSURLResponse *response; NSError *error; NSData *dati = [NSURLConnection sendSynchronousRequest:richiesta returningResponse:&response error:&error]; testo = @""; //stringa in formato JSON inviata in risposta dallo script NSString *esitoRicerca = [[[NSString alloc] initWithData:dati encoding:NSASCIIStringEncoding] autorelease]; risultato.text = esitoRicerca; //risultato è una textView sull'unica view che uso al momento, andrà tolta //suppongo che qui ci vada una chiamata per passare alla view della tabella passandogli anche i dati ricevuti (esitoRicerca) } Da quello che ho capito, ammesso di aver capito bene, alla fine del metodo precedente dovrei dire al file RecuperoInfoAppDelegate.m di passare alla view della tabella, ma come si fa? Nel frattempo ho aggiunto al progetto i file .h e .m di una classe che fa uso di UITableView che dovrà gestire i dati ricevuti dallo script php per poi mostrarli. EDIT: hai risposto mentre scrivevo, adesso leggo la tua risposta. Link al commento Condividi su altri siti Altre opzioni di condivisione...
fra.makaveli Inviato 5 Luglio 2011 Segnala Condividi Inviato 5 Luglio 2011 Provo a descrivere meglio la situazione attuale di ciò che ho, magari viene più facile darmi indicazioni su come proseguire. Il progetto è di tipo Window-based, si chiama RecuperoInfo. Nel file RecuperoInfoViewController.m ho questa funzione che invia la richiesta e riceve la risposta - (IBAction)performSearch:(id)sender { NSMutableURLRequest *richiesta = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.sito.it/iosphp/responder.php"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:120.0]; [richiesta setHTTPMethod:@"POST"]; [richiesta setHTTPBody:[[NSString stringWithFormat:@"search=%@", textInput.text] dataUsingEncoding:NSASCIIStringEncoding]]; NSURLResponse *response; NSError *error; NSData *dati = [NSURLConnection sendSynchronousRequest:richiesta returningResponse:&response error:&error]; testo = @""; //stringa in formato JSON inviata in risposta dallo script NSString *esitoRicerca = [[[NSString alloc] initWithData:dati encoding:NSASCIIStringEncoding] autorelease]; risultato.text = esitoRicerca; //risultato è una textView sull'unica view che uso al momento, andrà tolta //suppongo che qui ci vada una chiamata per passare alla view della tabella passandogli anche i dati ricevuti (esitoRicerca) } Da quello che ho capito, ammesso di aver capito bene, alla fine del metodo precedente dovrei dire al file RecuperoInfoAppDelegate.m di passare alla view della tabella, ma come si fa? Nel frattempo ho aggiunto al progetto i file .h e .m di una classe che fa uso di UITableView che dovrà gestire i dati ricevuti dallo script php per poi mostrarli. EDIT: hai risposto mentre scrivevo, adesso leggo la tua risposta. Direi qualcosa del tipo - (IBAction)performSearch:(id)sender { NSMutableURLRequest *richiesta = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.sito.it/iosphp/responder.php"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:120.0]; [richiesta setHTTPMethod:@"POST"]; [richiesta setHTTPBody:[[NSString stringWithFormat:@"search=%@", textInput.text] dataUsingEncoding:NSASCIIStringEncoding]]; NSURLResponse *response; NSError *error; NSData *dati = [NSURLConnection sendSynchronousRequest:richiesta returningResponse:&response error:&error]; testo = @""; //stringa in formato JSON inviata in risposta dallo script NSString *esitoRicerca = [[[NSString alloc] initWithData:dati encoding:NSASCIIStringEncoding] autorelease]; MyTableViewController * myTable = [[MyTableViewController alloc] init]; myTable.response = esitoRicerca; [self.navigationController pushViewController:myTable animated:YES]; [myTable release]; } Link al commento Condividi su altri siti Altre opzioni di condivisione...
Alhazred Inviato 5 Luglio 2011 Autore Segnala Condividi Inviato 5 Luglio 2011 Grazie, ho aggiunto il tuo codice, modificando il nome della classe che gestisce la table view, ma la view non cambia, resta su quella con text field e pulsante. Non ho implementato l'elaborazione dei risultati e la loro visualizzazione, ma dovrebbe comunque apparirmi una tabella vuota, giusto? Link al commento Condividi su altri siti Altre opzioni di condivisione...
Alhazred Inviato 5 Luglio 2011 Autore Segnala Condividi Inviato 5 Luglio 2011 Nel TableResultsViewControler.h ho messo questo #import <UIKit/UIKit.h> @interface TableViewResults : UITableViewController { NSMutableArray *results; } @property (nonatomic, retain) NSMutableArray *results; @end Nel TableResultsViewControler.m @synthesize results; - (void)viewDidLoad { [super viewDidLoad]; self.title = @"Recupero Info"; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return results.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[uITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; } // Configure the cell... cell.textLabel.text = [[results objectAtIndex:indexPath.row] valueForKey:@"testo"]; NSString *path = [NSString stringWithFormat:@"http://www.sito.it/iosphp/img/%@",[[results objectAtIndex:indexPath.row] valueForKey:@"img"]]; //path all'immagine... cell.imageView.image = [uIImage imageWithContentsOfFile:path]; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; return cell; } Nel file TableResultsViewControler.xib con IB ho impostato dataSource, delegate e view collegandoli al File's owner C'è qualcosa che mi manca? Link al commento Condividi su altri siti Altre opzioni di condivisione...
fra.makaveli Inviato 5 Luglio 2011 Segnala Condividi Inviato 5 Luglio 2011 Dovrebbe essere a posto. L'unica cosa in cui sono andato a memoria è [self.navigationController pushViewController:myTable animated:YES]; Controlla che navigationController sia != nil Link al commento Condividi su altri siti Altre opzioni di condivisione...
Alhazred Inviato 5 Luglio 2011 Autore Segnala Condividi Inviato 5 Luglio 2011 Si, il navigationController risulta essere nil, come lo creo? Link al commento Condividi su altri siti Altre opzioni di condivisione...
fra.makaveli Inviato 5 Luglio 2011 Segnala Condividi Inviato 5 Luglio 2011 Direi che hai sbagliato a creare il MainWindow.xib Hai trascinato il ViewController della tua finestra di partenza DENTRO il navigationController (e non sotto?) Perchè a me non è nil e funziona tutto. Link al commento Condividi su altri siti Altre opzioni di condivisione...
Alhazred Inviato 5 Luglio 2011 Autore Segnala Condividi Inviato 5 Luglio 2011 Non mi fa mettere la mia view dentro il Navigation Controller del MainWindow.xib, trascino la view, ma va o sopra o sotto, se non cancello il Root View Controller me la fa mettere là sotto, ma comunque in tal modo non mi funziona. Visto che ormai hai creato il progetto, me lo manderesti in qualche modo in un file zip? Così mi vedo cosa c'è che non va col mio senza doverti chiedere ogni secondo perché non mi funziona. Link al commento Condividi su altri siti Altre opzioni di condivisione...
fra.makaveli Inviato 5 Luglio 2011 Segnala Condividi Inviato 5 Luglio 2011 Ok.. lascia perdere i nomi e gli errori di battitura :P progetto (quando hai fatto dimmelo che lo cancello dal sito :P) Link al commento Condividi su altri siti Altre opzioni di condivisione...
Alhazred Inviato 5 Luglio 2011 Autore Segnala Condividi Inviato 5 Luglio 2011 Scaricato, grazie mille. Adesso vedo un po' di far funzionare anche il mio. Link al commento Condividi su altri siti Altre opzioni di condivisione...
Alhazred Inviato 5 Luglio 2011 Autore Segnala Condividi Inviato 5 Luglio 2011 Adesso funziona anche il mio! Ho capito dove sbagliavo, invece di inserire un nuovo oggetto View Controller e poi assegnargli la classe della mia view, provavo direttamente a trascinare la view nel MainWindow.xib Grazie per l'aiuto! Link al commento Condividi su altri siti Altre opzioni di condivisione...
fra.makaveli Inviato 5 Luglio 2011 Segnala Condividi Inviato 5 Luglio 2011 Di niente... Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.