Aprire una nuova schermata dopo un click

di il
6 risposte

Aprire una nuova schermata dopo un click

Salve a tutti!
Sono un nuovo utente, alle prime armi con l'Objective-C.
Ho un codice già iniziato da un mio ex collega, nel quale si ha una mappa con dei marker in corrispondenza di alcuni luoghi di interesse (l'idea è quella di un'app tipo Around Me ma tramite l'utilizzo della realtà aumentata). Ora vorrei che cliccando quei marker point si rimandasse ad una schermata con le informazioni su quel luogo.
Qualcuno saprebbe darmi una mano? Sono del tutto ignorante su questo linguaggio, quindi mi farebbe piacere qualche esempio concreto. Grazie!

6 Risposte

  • Re: Aprire una nuova schermata dopo un click

    Ciao,

    prima di tutto permettimi di dirti che se hai problemi di questo tipo io ti consiglierei di leggerti prima qualche guida. Se hai problemi a fare qualcosa di basilare, prevedo problemi ben peggiori con cose più complesse che dovrai affrontare.

    Ad ogni modo, per rispondere alla tua domanda, hai diversi modi per mostrare delle nuove "schermate". Il primo modo è quello di pushare un nuovo viewController tramite l' oggetto UINavigationController, che ha i suoi vantaggi per quanto riguarda la navigazione (gestisce automaticamente il back, perchè il navigationController ha uno stack di controllers, quindi se chiamerai la pop lui automaticamente ritornerà al controller precedente. addirittura ti implementa da solo il tasto back nella navigationBar se vuoi). Un altro metodo è quello della finestra modale, ovvero una vista che compare al di sopra della vista corrente.
    Questi sono i più utilizzati, ma potenzialmente potresti anche gestirti da solo una cosa del genere istanziando un controller e aggiungendo la sua view al di sopra di una view che hai già su schermo (ad esempio quella del controller corrente, o quella della mappa).

    In sostanza dipende dall' effetto che vuoi. Se vuoi che compaia da destra, se vuoi che compaia dal basso, se vuoi che non occupi tutto il display ma solo una parte (mentre magari parte della mappa continua a vedersi), eccetera.

    I metodi che possono tornarti utili per le cose sopracitate sono i seguenti:

    per la push sul navigationController:
    [self.navigationController pushViewController:nomeController animated:YES];
    per la modale (sempre sul navigationController):
    [self.navigationController presentModalViewController:nomeController animated:YES];
    per aggiungere una view ad un altra view:
    [self.view addSubview:nomeViewDaAggiungere];

    Spero di esserti stato utile.
  • Re: Aprire una nuova schermata dopo un click

    Ti ringrazio molto. Le guide le sto leggendo ovviamente, ma pensavo fosse più semplice come linguaggio...ad ogni modo ti spiego meglio il mio problema:
    ho fatto control-drag tra una view e l'altra, creando un push segue (non so se i termini che uso siano esattamente precisi, spero comunque di farmi capire)...nel controller della view da cui parte il segue ho definito il metodo prepareForSegue:sender:, ma non succede niente. Questo non mi meraviglia, dato che non mai legato tra loro il fatto di cliccare un markerpoint e la view successiva.
    Io pensavo quindi di modificare il metodo touchesBegan...ma non ho idea di come fare...
    Ogni idea è ben accetta!!!
  • Re: Aprire una nuova schermata dopo un click

    Ho qualche problema con la terminologia che hai usato. Quasi sicuramente è colpa mia, ma non ho capito una verga

    Prova a rispiegarmi in maniera più dettagliata cosa vorresti fare, il risultato che vorresti avere, e provo a darti una mano
  • Re: Aprire una nuova schermata dopo un click

    Okok colpa mia, ne so ancora troppo poco. Ora ho trovato un'altra strada, quindi posso spiegare meglio.
    Allora, sto lavorando tra due vie controller diversi: in uno (chiamiamolo viewcontroller1) ho definito il prepareforsegue e ho testato che è definito nel modo corretto. Nel viewcontroller2 invece voglio effettuare il performseguewithidentifier: il problema è che non so come richiamare il viewontroller1. Infatti, se inizializzo una nuova variabile della classe 2, non riconosce il segue. Cercando su internet sembra che questo sia un problema molto comune, ma ancora non ho trovato una giusta soluzione.

    Ti metto le due righe che appartengono al viewcontroller2:

    ViewController1 *arview=[ViewController1 alloc];
    [arview performSegueWithIdentifier:@"showMapPointDetails" sender:placeObject];

    l'identificativo è giusto. Il problema sta nel fatto di aver allocato una nuova variabile e non aver richiamato il viewcontroller1. Come posso fare?
    Spero stavolta di essere stato più chiaro. Grazie!
  • Re: Aprire una nuova schermata dopo un click

    Ok, anche se non posso aiutarti abbiamo svelato un arcano. Non capivo di cosa tu parlassi perchè riguardo gli Storyboard non so nulla . Io sono un "vecchio stampo", lavoro di codice e xibs.

    Mi dispiace, attendi risposte da altri.

    Alla prossima
  • Re: Aprire una nuova schermata dopo un click

    Grazie comunque. Ho risolto nel frattempo!!
Devi accedere o registrarti per scrivere nel forum
6 risposte