2011-11-21 18 views
1

單擊按鈕時,出現嵌入NavigationView中的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]; 

} 

在PopoverView的NavigationView:

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

如果我摸到3rd SubView,PopoverView消失。

我的問題是:

當我再次點擊按鈕,我想看到最新的視圖 - 3rd SubView not 1st SubView.

回答

1
  1. 聲明UINavigationController *navcontroller;在.h文件中
  2. 僅創建與您的根視圖控制器, 在viewDidLoad方法onсenavcontroller,例如。

    - (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]; 
    } 
    
+0

謝謝!!你的回答對我很有幫助。 :) – hyekyung

1

無需創建每次UINavigationController。保存它以同樣的方式作爲MyStuffListViewController

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

非常感謝您的諮詢!^___^ – hyekyung

相關問題