2011-10-28 4 views
1

私はUINavigationControllerを持っていて、そのビューコントローラの1つでは、ツールバーをviewDidAppearで非表示にしています。うまく動作します。しかし、viewDidDisappearでは、私はそれを隠しとして設定していますが、隠されていません。私は間違って何をしていますか?関連するコードは次のとおりです。"[setToolBarHidden:YES]"動作していません

- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 

    [[self navigationController] setToolbarHidden:NO]; 

    UIBarButtonItem *buttomSubmit = [[UIBarButtonItem alloc] initWithTitle:@"Submit" 
                    style:UIBarButtonItemStyleBordered 
                    target:self 
                    action:@selector(done)]; 
    UIBarButtonItem *buttonPrint = [[UIBarButtonItem alloc] initWithTitle:@"Print" 
                    style:UIBarButtonItemStyleBordered 
                    target:self 
                    action:@selector(done)]; 
    UIBarButtonItem *buttonUnits = [[UIBarButtonItem alloc] initWithTitle:@"Units" 
                    style:UIBarButtonItemStyleBordered 
                    target:self 
                    action:@selector(done)]; 
    UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace 
                       target:nil 
                       action:nil]; 

    [self setToolbarItems:[NSArray arrayWithObjects:buttonUnits, flexSpace, buttomSubmit, buttonPrint, nil]]; 

    [buttomSubmit release]; 
    [buttonPrint release]; 
    [buttonUnits release]; 
    [flexSpace release]; 
} 

- (void)viewDidDisappear:(BOOL)animated { 
    [super viewDidDisappear:animated]; 
    [[self navigationController] setToolbarHidden:YES]; 
} 

ありがとうございます!

答えて

3

viewDidDisappearビューが画面から消えた後に呼び出されます。戻るボタンを押したためにビューが画面から消えた場合は、ナビゲーションコントローラのスタックからポップされています。 navigationControllerプロパティにUIViewController class reference Notesから

:ビューコントローラはその スタック内にある場合

のみナビゲーションコントローラを返します。ナビゲーションコントローラが に見つからない場合、このプロパティはnilです。

これは[self navigationController]がnilを返すされているのでsetToolbarHiddenメッセージがnilに送信され、何の影響も与えないことを意味します。

新しいビューが読み込まれた後に隠すには、新しいビューのコントローラーのviewDidAppearメソッドで非表示にすることができます。

0

ビューが画面に表示されないうちに非表示にしても問題ありません。

-(void)viewWillDisappear:(BOOL)animated{ 
    [super viewWillDisappear:animated]; 
    [self.navigationController setToolbarHidden:YES animated:YES]; 
} 
関連する問題