0

我現在有點絕望:/ 我有一個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://stackoverflow.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

回答

2
  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)不重新加載。 如果您可以通過我的私人電子郵件與我聯繫(請參閱stackoverflow帳戶),我真的很想回饋給您。 在此先感謝! – joelschmid 2012-03-21 20:30:37