从方法调用时WebView没有响应

时间:2010-04-18 11:16:10

标签: iphone objective-c uiwebview methods

我有一个带有tabbar和webview的应用程序。我试图让每次用户点击栏时应用程序回到默认URL。现在我正在拦截水龙头并启动一个方法,但它并没有影响我的webview(它没有加载页面)。从类中调用时,该方法可以正常工作,但是当我从我的应用委托中调用它时,我会拦截水龙头。

我怀疑这是我创建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];
    }
}

谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

如果我理解正确,那么在{ - 1}}中有一个SecondViewController实例连接到Interface Builder中的secondView实例。您要执行的操作是从UIWebView的{​​{1}}实例调用goToPage。 (特别要注意我正在谈论实例 - 我相信这是潜在的问题。)

SecondViewController中,当您执行RedDragonAppDelegate时,您正在创建tabBarController:didSelectViewController:的新实例,并且可以调用其SecondViewController * sv = [[SecondViewController alloc] init];方法,但SecondViewController是与Interface goToPage中显示的sv的实例不同,SecondViewControllersecondView相关联(即,当您创建{{>>实例 UIWebView时1}},ivar SecondViewController未设置,似乎是secondView,但我不知道它是nil}。

您可能(*)想要做的是将nil添加到IBOutlet SecondViewController *sv;的{​​{1}},确保在Interface Builder中有@interface的实例,将RedDragonAppDelegate的新IBOutlet RedDragonAppDelegate连接到Interface Builder中的sv实例,并删除RedDragonAppDelegate中定义和初始化SecondViewController的行。

(*)我不是100%肯定这个,因为我不做iPhone的东西,我不知道你的各种观点/对象/等。在XIB / NIB文件中排列,但如果所有内容都在一个XIB / NIB文件中,我很确定它会起作用。