一千萬個為什麽

搜索

從方法調用時WebView沒有響應

我有一個帶有tabbar和webview的應用程序。我試圖讓每次用戶點擊欄時應用程序恢復默認URL。現在我正在攔截水龍頭並啟動一個方法,但它並沒有影響我的webview(它沒有加載頁面)。從類中調用時該方法可以正常工作,但是當我從我的app委托中調用它時,我才能攔截水龍頭。

我懷疑這是我創建SecondViewController對象的方式,它沒有指向webview,但我不知道我做錯了什麽。

這是代碼:

第二個視圖標題(WebView所在的位置)

@interface SecondViewController : UIViewController {
IBOutlet UIWebView *secondView;
}
- (void) goToPage;

第二種觀點實施

#import "SecondViewController.h"
@implementation SecondViewController
- (void)awakeFromNib 
{
    [self goToPage];
}

- (void) goToPage
{
    NSLog(@"go to page");
    NSString *newURL = [NSString stringWithFormat:@"http://pageurl"];
    [secondView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:newURL]]];
}

我的app委托,我調用SecondViewController類方法:

#import "RedDragonAppDelegate.h"
#import "SecondViewController.h"

@implementation RedDragonAppDelegate

@synthesize window;
@synthesize rootController;

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
   //Override point for customization after application launch
    [window addSubview:rootController.view];
}

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {

    NSLog(@"didSelectViewController %d", rootController.selectedIndex);

    SecondViewController * sv = [[SecondViewController alloc] init];

    if (rootController.selectedIndex == 0){
        //NSLog(@"if in didSelectViewController 0");
    } else if (rootController.selectedIndex == 1) {
        //NSLog(@"if in didSelectViewController 1");
        [sv goToPage];
    }
}

謝謝你的幫助!

最佳答案

如果我理解正確,你有一個 SecondViewController 的實例,其中 secondView 連接到Interface Builder中的 UIWebView 實例。你想要做的是從 RedDragonAppDelegate 中的 SecondViewController 實例上調用 goToPage 。 (特別要註意我正在談論這些實例 - 我相信這是潛在的問題。)

tabBarController:didSelectViewController:中,當你執行 SecondViewController * sv = [[SecondViewController alloc] init]; 時,你正在創建一個新的 SecondViewController實例你可以調用它的 goToPage 方法,但 sv 與Interface Builder中出現的 SecondViewController 的實例不同,並且 secondView 連接到 UIWebView (也就是說,當您創建 SecondViewController 的新實例時,ivar secondView </代碼>未設置,似乎是 nil ,但我不知道它保證是 nil )。

您可能(*)想要做的是將 IBOutlet SecondViewController * sv; 添加到 RedDragonAppDelegate@interface ,確保你有一個Interface Builder中的 RedDragonAppDelegate 實例,將 RedDragonAppDelegate 的新IBOutlet sv 連接到Interface Builder中的 SecondViewController 實例,並刪除 tabBarController:didSelectViewController:中定義和初始化 sv 的行。

(*)我不是100%肯定這個,因為我不做iPhone的東西,我不知道你的各種觀點/對象/等。在XIB/NIB文件中排列,但如果一切都在一個XIB/NIB文件中,我很確定它會工作。

轉載註明原文: 從方法調用時WebView沒有響應