Cocoa touch 如何重新绘制选项卡栏控制器显示的视图

Cocoa touch 如何重新绘制选项卡栏控制器显示的视图,cocoa-touch,uitabbarcontroller,modalviewcontroller,Cocoa Touch,Uitabbarcontroller,Modalviewcontroller,我在拆分视图控制器的主视图中有一个选项卡栏控制器。我向该选项卡栏控制器添加了一个子视图以显示一些信息。我不使用模态视图,因为我不想要模态行为,我需要在主视图中显示该子视图 此信息视图的显示可能由其他几个视图控制器中的任何一个触发,具体取决于当时显示的内容。(例如,点击地图上披露按钮列表中的单元格。) 有时,当我关闭此信息子视图时,选项卡栏控制器显示的视图为空。它通常为纯色或白色。我可以切换选项卡,当我返回到我所在的选项卡时,视图将正确绘制 我想尝试在视图上使用setNeedsDisplay方法,

我在拆分视图控制器的主视图中有一个选项卡栏控制器。我向该选项卡栏控制器添加了一个子视图以显示一些信息。我不使用模态视图,因为我不想要模态行为,我需要在主视图中显示该子视图

此信息视图的显示可能由其他几个视图控制器中的任何一个触发,具体取决于当时显示的内容。(例如,点击地图上披露按钮列表中的单元格。)

有时,当我关闭此信息子视图时,选项卡栏控制器显示的视图为空。它通常为纯色或白色。我可以切换选项卡,当我返回到我所在的选项卡时,视图将正确绘制

我想尝试在视图上使用setNeedsDisplay方法,因此我在选项卡栏控制器类中尝试了以下方法:

- (void) redrawCurrentTab {
    UIView *currentView = [[self.viewControllers objectAtIndex:self.selectedIndex] view];
    [currentView setNeedsDisplay];
}
我检查了currentView的值对于应该显示的视图是否正确。但这一观点并没有像我所希望的那样被重新描绘

所以我有两个问题,我可以看到:

  • 我可能不明白setNeedsDisplay是如何工作的
  • 我正在寻找一种更好的方法来完成信息视图的显示,而不是作为选项卡栏控制器的子视图
  • currentIndex
    是在委托方法
    tabBarController:didSelectViewController:

    // 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;
    }