0

分割ビュー コントローラーのマスター ビューにタブ バー コントローラーがあります。そのタブ バー コントローラーにサブビューを追加して、情報を表示します。モーダルな動作が必要なく、マスター ビュー内にサブビューを表示する必要があるため、モーダル ビューは使用しません。

この情報ビューの表示は、その時点で表示されている内容に応じて、他のいくつかのビュー コントローラーのいずれかによってトリガーされる場合があります。(例:地図上の開示ボタン一覧のセルをタップ)

この情報サブビューを閉じると、タブ バー コントローラーによって表示されるビューが空白になることがあります。それは通常、無地または白です。タブを切り替えることができ、元のタブに戻ると、ビューが適切に描画されます。

ビューで setNeedsDisplay メソッドを使用してみたいので、タブ バー コントローラー クラス内でこれを試しました。

- (void) redrawCurrentTab {
    UIView *currentView = [[self.viewControllers objectAtIndex:self.selectedIndex] view];
    [currentView setNeedsDisplay];
}

表示するビューに対して currentView の値が正しいことを確認しました。しかし、私が望んでいたように、ビューは再描画されていません。

したがって、私が見ることができる2つの問題があります。

  1. setNeedsDisplay がどのように機能するのか理解できないかもしれません。
  2. タブ バー コントローラーのサブビューとしてではなく、この情報ビューの表示を実現するためのより良い方法についてのアドバイスを探しています。
4

1 に答える 1

0
// This is a hack, because the current tab is disappearing when the details view is withdrawn.
// So it needs to cycle to another view and then back.
- (void) redrawCurrentTab {
    if (currentIndex == 0) 
        self.selectedIndex = 1;
    else
        self.selectedIndex = 0;
    self.selectedIndex = currentIndex;
}

currentIndexデリゲートメソッドで設定tabBarController:didSelectViewController:

于 2012-06-29T03:19:56.943 に答える