View

di il
28 risposte

View

Salve a tutti, ho il seguente codice:

-(IBAction)chiudi:(id)sender
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

praticamente ho collegato questo evento a un button e mi aspettavo che la view si fosse chiusa,solo che non è stato cosi',vorrei sapere se sbaglio qualcosa.
grazie mille

28 Risposte

  • Re: View

    Nessuno che mi può aiutare?
  • Re: View

    RemoveFromSuperview credo faccia al caso tuo
  • Re: View

    Ciao, perchè quella non va bene? No perchè molti libri( tra cui quello che sto studiando) usa quel metodo, il problema che a me mi da proprio errore di esecuzione
  • Re: View

    Mi puoi scrivere l' errore e, se non ti pesa, anche il codice dove istanzi quella view?
    Cerchiamo di capire insieme il motivo per cui non va. Comunque se tu istanzi una vista e la aggiungi ad un'altra vista, dopo per eliminarla ti basta rimuoverla dall vista superiore. Ovviamente però la vista resta allocata, quindi ti conviene sempre rilasciarla non appena la aggiungi alla superview. Ma questo è un problema che non si pone se usi ARC.
  • Re: View

    Allora, non so perchè ma ora il metodo che dicevo io funziona alla grande. Allora volevo provare il tuo modo per vedere la differenza però non mi trova i metodo:

  • Re: View

    Non si riesce a capire granchè dallo screenshot, comunque l' importante è che il problema è risolto. Ad ogni modo il metodo è removeFromSuperview. Ma stiamo parlando di view, non di viewcontrollers.
  • Re: View

    Scusami mi potresti spiegare la differenza tra View e Viewcontrollers.
  • Re: View

    Quando si sviluppa un app in ios (e anche android) la maggior parte delle volte si segue il design pattern MVC. MVC sta per Model View Controller. Il model è tutto il codice che ti permette di accedere ai dati che poi vuoi visualizzare. Nel controller ci va tutta la logica che magari rielabora questi dati da visualizzare nella view, che è dove vengono visualizzati i dati (per intenderci uno xib) e ci sono tutte le logiche che hanno a che fare con l' interfaccia.

    Di default xcode ti crea il ViewController, che nasce come controller di una determinata view e ti permette di creare anche lo xib associato. In realtà però conviene scindere le cose per mantenere il model, la view e il controller separati ed indipendenti. Anche perchè per la view spesso non basta avere lo xib, tocca scrivere del codice.

    Nella maggior parte degli esempi che trovi sul web, il ViewController non è altro che un unico sorgente contentente sia il codice per la view che quello del controller. Io però per una questione di ordine e anche per una questione di riusabilità del codice, preferisco scindere il tutto ed avere il model in un file, la view in un altro e il controller in un altro ancora.

    Fino a qualche tempo fa io lavoravo come tutti, poi però confrontandomi con chi ne sa più di me, sono giunto alla conclusione che avere un ViewController contenente anche le logiche della view mi sa molto di accozzaglia di codice buttato così alla ca**o di cane in un sorgente.

    Comunque leggiti il pattern su wiki, quello che ti ho linkato. Non sono molto bravo a spiegarmi, li si capisce bene. Questa è roba che prescinde da iOs e Objective C. E' un pattern che viene utilizzato in maniera massiccia nello sviluppo mobile e web.
  • Re: View

    Ciao,

    allora grazie per le info/consiglio, infatti sto ricercando in rete(ho visto anche su wiki) alcuni documenti e su youtube ho trovato questi:

    http://www.youtube.com/watch?v=Y9UAQhXBFNM&feature=plc
    http://www.youtube.com/watch?v=PJyZ1usX0Dc&feature=relmfu
    http://www.youtube.com/watch?v=k3B8kXSDU9M&feature=relmfu

    ora li seguo un po' e digerisco l'argomento e poi ti faccio sapere un pò la situazione.

    Per quanto riguarda le view avrei due domande:

    1)A parte il modello MVC qual'è la differenza tra View e Controller a livello di oggetti?
    cioè che differenza c'è tra un oggetto di tipo view e uno di tipo viewcontroller?

    2)Se io ho 3 viste con ognuna un bottone per andare alla vista successiva come faccio,senza storyboard(via codice), per poter andare,tramite il touch del bottone,da una view a un'altra,esempio:
    dalla prima alla terza,dalla terza alla seconda, e dalla terza alla prima?
    Perchè con il metodo che hai detto prima lo posso fare, però avevo fatto il collegamento con storyboard c'era come riferimento quello

    Ti ringrazio ancora per la disponibilità e pazienza
  • Re: View

    Di nulla. I video non li ho guardati perchè sono in ufficio, però ho visto che riguardano l' MVC. Per quanto riguarda le tue domande:

    1) La differenza sostanziale è che una View può essere visualizzata a schermo e può avere tante sottoviste. Un controller invece non può essere visualizzato, ma può mostrare delle viste. Sono due oggetti diversi.

    2) programmaticamente puoi scrivere un metodo che fa una push al controller (con pushToViewController:) della vista B e legare questo metodo al bottone desiderato (con addTarget:action:forControlEvent:). In alternativa puoi utilizzare un unico controller con le n viste che ti occorrono e alla pressione dei bottoni setti visibile quella desiderata e nascondi le altre. Potresti anche usare le modal, o anche altri modi...dipende da ciò che vuoi fare. Comunque sempre per una questione di ordine, a meno che questo non mini la riusabilità del codice, io ti consiglio di usare le push se puoi. Però per poter fare una push hai bisogno del navigationController.


    Spero di esser stato chiaro. Se ci sono altri problemi chiedi
  • Re: View

    Ciao,
    senti riguardo il secondo punto(riguardo le view) potresti scrivere,se vuoi e hai tempo, un mini codice di esempio perchè cosi mi sono un pò perso
  • Re: View

    Hai il navigation controller?? ognuna di queste viste ha un controller proprio?? se la risposta è si allora agisci in questo modo:

    all' IBOutlet del bottone buttonX gli aggiungi il metodo goToXView in questo modo:
    [self.buttonX addTarget:self action:@selector(goToXView) forControlEvent:UIControlEventTouchUpInside];
    Presupponendo che il controller della vista di destinazione si chiama XViewController, il metodo goToXView è il seguente:
    -(void)goToXView {
           XViewController *x = [[XViewController alloc] init];
           [self.navigationController pushToViewController:x];
    }
    Considera che ho fatto un caso generico. E' ovvio che se il controller in questione ha un costruttore particolare, lo istanzi come ti serve. Inoltre, se non usi ARC (automatic reference counting) dopo la push puoi rilasciare *x.
  • Re: View

    Allora partiamo dall'inizio diciamo, che differenza c'è tra la modal e la push?
    Perchè per la push c'è per forza bisogno del navigation controller?

    scusa se ti faccio queste domande,magari anche stupide, ma sono all'inizio
  • Re: View

    Il navigation controller in realtà è un semplicissimo stack contenente controllers, quindi quando effettui una push, va al controller desiderato, mentre quando fai una pop torna al controller caricato precedentemente.

    Per le differenze, senza che mi dilungo troppo, basta che fai una rapida ricerca su google e tra i primi risultati trovi taaaaante belle risposte.
Devi accedere o registrarti per scrivere nel forum
28 risposte