如何重绘Tab键控制器显示的视图

时间:2012-06-23 22:52:31

标签: cocoa-touch uitabbarcontroller modalviewcontroller

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

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

有时,当我关闭此信息子视图时,标签栏控制器显示的视图为空白。它通常是背面或白色。我可以切换标签,当我回到我所在的标签时,视图被正确绘制。

我想尝试在视图上使用setNeedsDisplay方法,所以我在我的标签栏控制器类中尝试了这个:

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

我检查了currentView的值对于应该显示的视图是否正确。但是这个观点并没有像我希望的那样重新绘制。

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

  1. 我可能不明白setNeedsDisplay是如何工作的。
  2. 我正在寻找有关更好地完成信息视图展示的建议,而不是作为标签栏控制器的子视图。

1 个答案:

答案 0 :(得分: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:

中设置