【问题标题】:How to reload UIViewController如何重新加载 UIViewController
【发布时间】:2012-09-05 04:00:11
【问题描述】:

我想重新加载标签栏控制器(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];
}

【问题讨论】:

  • 何时要重新加载/刷新您的 VC?
  • 我在另一个 NSObject 类中调用应用程序委托,我在其中放置了一些按钮操作。当按下按钮时,我想重新加载 VC

标签: iphone ios xcode ios4 iphone-sdk-3.0


【解决方案1】:

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

将 VC 添加到 NSNotificationCenter:

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

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

【讨论】:

  • 嗨 Stavash..我可以把这个方法放在哪里?我的意思是“ViewWillAppear”?当我切换标签栏时,我正在调用查看购物车 Web 服务。我正在使用 UIViewController 类。
  • ViewWillAppear 会在每次即将显示视图时调用 - 这不仅是在您在标签栏之间切换时,而且在您从导航堆栈中推入和弹出控制器或呈现和关闭模态视图。如果这符合您的需求,那么可以,否则您需要考虑其他事情
猜你喜欢
  • 2011-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多