2011-02-09 7 views
9

W jaki sposób "wykonać selektor" do nadrzędnego kontrolera kontrolera uipopover? Mam uipopovercontroller lanuched z uiviewcontroller, a ten kontroler uipopover zawiera inny kontroler uiviewcontroller. Nie mogę uzyskać dostępu do nadrzędnego kontrolera widoku z poziomu okna popover lub kontrolera widoku "wewnętrznego".UIPopovercontroller Parent?

Mam nadzieję, że mam być jasne ...

BTW - parentViewcontroller nie działa ...

Dzięki!

Odpowiedz

8

Nie można tego zrobić bezpośrednio za pomocą UIPopoverController. Będziesz musiał prawdopodobnie przekazać referencję do nadrzędnego kontrolera widoku do kontrolera widoku jesteś zarządzającej z kontrolerem popover:

// Assumes these calls are made from within a view controller and that 
// MyViewController has a property called previousViewController 

MyViewController * myViewController = [[[MyViewController alloc] init] autorelease]; 
myViewController.previousViewController = self; 
UIPopoverController * popoverController = [[[UIPopoverController alloc] 
    initWithContentViewController:myViewController] autorelease]; 

UIBarButtonItem * rightBarButtonItem = self.navigationItem.rightBarButtonItem; 
[popoverController presentPopoverFromBarButtonItem:rightBarButtonItem 
          permittedArrowDirections:UIPopoverArrowDirectionDown 
              animated:YES]; 

coś takiego, ale ważne jest to, że kontroler widoku (zarządzane przez kontroler popover) musi pobrać odwołanie do nadrzędnego kontrolera widoku przed wyświetleniem popover.

+0

Dokładnie to, co myślałem. Jeśli to jedyny sposób, zrobię to. Dzięki! –

+0

@AviTsadok Możesz użyć popoverController.delegate – itsji10dra

0

Możesz użyć metody prywatnej, aby uzyskać kontroler rodzicielski z kontrolera widoku.

UIPopoverController *popopverController = [self performSelector:@selector(_popoverController)]; 
[popopverController dismissPopoverAnimated:YES];