6

我想重新加载标签栏控制器(UIViewController)中包含的所有视图。搜索后我发现我必须应用 setNeedsDisplay 方法,但我无法找到我应该在哪里应用它。也欢迎任何其他替代方案

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    .....
    .....

    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    [self customToolbar];
    [self.window addSubview:tabBarController.view];
    [self.window makeKeyAndVisible];    
    return YES;
}
-(void)customToolbar
{
    //Declared view controllers and their Navigation Controller
    .....

    //Declared tab bar items
    .....    

    tabBarController = [[GTabBar alloc] initWithTabViewControllers:viewControllersArray tabItems:tabItemsArray initialTab:1];
}
4

1 回答 1

4

正确的做法是将任何需要刷新的 VC 作为观察者添加到某个 NSNotificationCenter 通知名称。一旦 VC 收到此消息,只需调用一个选择器,该选择器调用[self setNeedsDisplay].

将 VC 添加到 NSNotificationCenter:

[[NSNotificationCenter defaultCenter] addObserver:self selector: @selector(setNeedsDisplay) name:@"ViewControllerShouldReloadNotification" object:nil];

不要忘记removeObserver:self在视图控制器被释放时调用。

于 2012-09-12T07:27:01.827 回答