Как я могу увидеть последний подвид после щелчка поповера, встроенного в NavigationView? - PullRequest
1 голос
/ 21 ноября 2011

При нажатии кнопки появляется popoverView, встроенный в NavigationView. Мой код выглядит следующим образом:

  -(IBAction)myStuffPOP:(id)sender
   {
    if(myStuffListViewController ==nil)
    {        
        myStuffListViewController = [[MyStuffListViewController alloc] init]; 
    }
    UINavigationController *navcontroller=[[[UINavigationController alloc] initWithRootViewController:myStuffListViewController] autorelease];
 // Here we create popover controller.
    mystuffPopoverView =  [[UIPopoverController alloc] initWithContentViewController:navcontroller] ;
    CGRect popoverRect = [self.view convertRect:[sender frame] fromView:[sender superview]];

    popoverRect.size.width = MIN(popoverRect.size.width, 100);
    popoverRect.size.height = 40;

    [mystuffPopoverView presentPopoverFromRect:popoverRect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

    [navcontroller setNavigationBarHidden:NO];

} 

В NavigationView PopoverView:

1st subView ---> 2nd SubView ---> 3rd Subview

Если коснуться 3rd SubView, PopoverView исчезнет.

Мой вопрос:

Когда я снова нажму кнопку, я хочу увидеть последний вид - 3rd SubView not 1st SubView.

Ответы [ 2 ]

1 голос
/ 21 ноября 2011
  1. Объявление UINavigationController *navcontroller; в файле .h
  2. Создайте только один navcontroller с вашим корневым контроллером представления, в методе viewDidLoad, например.

    - (void)viewDidLoad {     
        myStuffListViewController = [[MyStuffListViewController alloc] init]; 
        navcontroller=[[UINavigationController alloc] initWithRootViewController:myStuffListViewController]; }
    
  3. Показать UIPopoverController с существующим стеком навигации

    -(IBAction)myStuffPOP:(id)sender    {
        //Here we create popover controller.
        mystuffPopoverView =  [[UIPopoverController alloc] initWithContentViewController:navcontroller] ;
        CGRect popoverRect = [self.view convertRect:[sender frame] fromView:[sender superview]];
    
        popoverRect.size.width = MIN(popoverRect.size.width, 100);
        popoverRect.size.height = 40;
    
        [mystuffPopoverView presentPopoverFromRect:popoverRect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp
    animated:YES];
        [navcontroller setNavigationBarHidden:NO]; }
    
  4. Не забудьте release объекты

    - (void)dealloc {   
        [myStuffListViewController release];
        [navcontroller release];
    }
    
1 голос
/ 21 ноября 2011

Нет необходимости создавать UINavigationController каждый раз.Сохраните его так же, как MyStuffListViewController

if ( myNavigationController == nil )
    myNavigationController = [[[UINavigationController alloc]     initWithRootViewController:myStuffListViewController] autorelease];
...