单击TabBarItem重新加载ViewController

时间:2012-03-15 19:30:49

标签: objective-c uitabbar pushviewcontroller tabbarcontroller

我现在有点绝望:/ 我有一个带有4个项目的标签栏控制器。在4.选项卡中,我包含了一个显示pdf列表的webView。如果我在webView中打开PDF,则无法使用链接返回主webView。有没有办法重新点击4. TabBar重新加载视图?如果我从3.更改为4. tabbar它可以工作(viewWillAppear)。

enter image description here

有人告诉我,以下方法应该有效:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
if ([viewController isKindOfClass:[UIColor class]]) {
    //Try this if you're pushing the webView in another ViewController
    [viewController.navigationController popToRootViewControllerAnimated:YES];
    //or access to your webView and call goBack();
}

}

但实际上我不知道我应该在哪个文件中插入该方法。 (见打印屏幕)

预先感谢你的帮助!

1 个答案:

答案 0 :(得分:2)

  1. 子类UITabBarController
  2. 1.1。 Cmd + N并创建一个NSObject类的新实例,并将其命名为TabBarController

    1.2。在TabBarController.h中替换NSObject,使其显示为@interface TabBarController : UITabBarController <UITabBarControllerDelegate>

    1.3。在TabBarController.m中添加:

    - (id) init
    {
      self = [super init];
      if (self) 
      {
        self.delegate = self;
      }
      return self;
    }
    

    1.4。这个

    - (void)tabBarController:(UITabBarController *)tabBarController 
        didSelectViewController:(UIViewController *)viewController
    {
      // Is this the view controller type you are interested in?
      if ([viewController isKindOfClass:[MehrViewController class]])
      {
        // call appropriate method on the class, e.g. updateView or reloadView
        [(MehrViewController *) viewController updateView];
      }
    }
    

    1.5。在IB,检查中,将标签栏控制器的类更改为您的 TabBarController(而不是UITabBarController

    1.6。您还需要在MehrViewController.h

    中加入TabBarController.m

    修改

    在MehrViewController.m中(正如您在问题中发布的那样,假设它有一个webView)

    // An example of implementing reloadView
        - (void)reloadView {
           [self.webView reload];
        }