1

ボタンをクリックすると、NavigationViewに埋め込まれたpopoverViewが表示されます。私のコードは次のとおりです。

  -(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.

4

2 に答える 2

1

UINavigationController毎回作成する必要はありません。と同じように保存します。MyStuffListViewController

if ( myNavigationController == nil )
    myNavigationController = [[[UINavigationController alloc]     initWithRootViewController:myStuffListViewController] autorelease];
于 2011-11-21T12:40:55.643 に答える
1
  1. UINavigationController *navcontroller;.h ファイルで宣言
  2. navcontrollerたとえば、viewDidLoad メソッドで、ルート ビュー コントローラーを使用して1 回だけ作成します。

    - (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];
    }
    
于 2011-11-21T12:49:25.603 に答える