通过点击TabBarItem重新加载ViewController

问题描述:

我现在有点绝望:/ 我有一个Tab Bar Controller with 4 Items。在4. Tab中,我包含了一个显示pdf列表的webView。如果我在webView中打开PDF,则无法通过链接返回到主webView。有没有办法通过重新点击4. TabBar重新加载视图?如果我从3.更改为4. tabbar它工作(viewWillAppear)。通过点击TabBarItem重新加载ViewController

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(); 
} 

}

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

非常感谢您的帮助!

+0

这是类似的问题。有一个关于如何重新加载页面的教程,可以通过在选项卡上定位。 http://*.com/questions/9709519/reload-uiview-when-pressing-tab-item-inside-initialized-view/9710060#9710060 – Canopus 2012-03-15 19:42:13

+0

谢谢!我通读了教程,但实际上我不知道在哪里添加描述的代码?如果您可以查看发布的printScreen,您是否知道我必须添加所描述的实现? – joelschmid 2012-03-15 19:56:37

  1. 子类UITabBarController

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,年检,变更类的标签栏控制器在(而不是UITabBarController)您TabBarController

1.6。您还需要包括MehrViewController.hTabBarController.m


编辑

在MehrViewController.m(如你在你的问题贴,假设它有一个web视图)

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

嘿Canopus!非常感谢您的帮助!我想我几乎可以得到它,但可悲的是,我现在得到了一个警告:“实例方法'-reloadView'找不到(返回类型默认为'id')这是什么意思?简单的问题...) 以下你会发现警告的图片: http://joelschmid.ch/daten/tabbarcontroller.tiff 我该怎么办? – joelschmid 2012-03-20 22:59:24

+0

@Schmid -reloadView是'你'在你的MehrViewController中定义的方法。您可能有不同的方法,例如-reloadMyWebView。默认情况下,你的MehrViewController没有这种方法。换句话说,你必须自己实现它。我添加了这样的实现的例子,作为对答案的编辑。 – Canopus 2012-03-20 23:35:45

+0

嘿@Canopus 我希望这是我最后一次打扰你! :-) 您可以查看存档中的PrintScreen(http://joelschmid.ch/daten/PrintSrciAppReloadWebsite.zip)。我认为我做的一切正确,但当我点击TabBarItem第二次网站(webView)不重新加载。 如果您可以通过我的私人电子邮件与我联系(请参阅*帐户),我真的很想回馈给您。 在此先感谢! – joelschmid 2012-03-21 20:30:37