2009-06-23 12 views
10

Ho un problema e cercherò di spiegare il problema:Come si accede al controller di visualizzazione di un super?

  1. devo principale UIViewController (schermo intero)
  2. ho secondario UIViewController (setBounds)
  3. ho aggiunto la mia vista secondaria al mio mainView utilizzare questo:

    [mainController.view addSubview:secondaryController.view]; 
    
  4. ho creato un terzo controllore: modalController, ho aggiunto al mio secondar Controller y come questo:

    [secondaryController presentModalViewController:modalController animated:YES]; 
    
  5. faccio calcoli sulla base di alcuni eventi all'interno del mio modelController.

  6. sono in grado di inviare messaggi dal mio modalController alla mia secondaryController utilizzando:

    [[self parentViewController] performSelector : @selector(myMethodInSecondaryController:) withObject : myObject afterDelay : .5]; 
    

    NOTA: "sé" corrisponde alla modalController

  7. ho bisogno di passare "myObject" per il mio mainController, ma non posso fare riferimento al mio mainController dal secondaryController. Ho provato questo:

    [[self parentViewController] performSelector : @selector(myMethodInMainController:) withObject:myObject afterDelay : .5]; 
    

    NOTA: "sé" corrisponde alla secondaryController

    ma non funziona, ho accesso alla visualizzazione del mio MainController utilizzando: self.view.superview

    NOTA: "sé" è il mio secondaryController

ma no al suo controller.

risposta

32

Nel vostro controller secondario, provare

id mainViewController = [self.view.superview nextResponder]; 

e verificare se questo è il controller della vista che stai cercando.

la documentazione di Apple -[UIResponder nextResponder]:

UIView implementa questo metodo restituendo l'oggetto UIViewController che lo gestisce (se ne ha uno) o il suo superview (se lo fa non)

+1

Grazie Nikolai !!!!!!!!!!!!!!!!! Che ha funzionato perfettamente :) grazie Saluti da Guadalajara Messico !! Alejandra :) – Alejandra

+1

Siete i benvenuti (da Berlino, Germania) –

Problemi correlati