2012-09-12 75 views
6

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

- (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]; 
} 
+0

当你想重新加载/刷新你的VC? – Maulik

+0

我在另一个NSObject类中调用应用程序委托,我在其中放置了一些按钮动作。当按钮被按下时,我想重新加载VC的 –

回答

4

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

要将VC添加到NSNotificationCenter:

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

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

+0

嗨Stavash ..我可以放这个方法吗?我的意思是“ViewWillAppear”?当我切换tabbar时,我打电话查看购物车web服务。我正在使用UIViewController类。 –

+1

ViewWillAppear在每一次视图即将被显示时都会被调用 - 这不仅仅是当您在标签栏之间切换时,还有当您从导航堆栈中弹出或弹出控制器,或者出现并消除模态视图时。如果这符合你的需求,那么是的,否则你需要考虑其他事情 – Stavash