【发布时间】:2010-04-18 11:16:09
【问题描述】:
我有一个带有 tabbar 和 webview 的应用程序。每次用户点击该栏时,我都试图让应用程序返回默认网址。现在我正在拦截点击并启动一个方法,但是它不会影响我的 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]]];
}
我的应用委托,我在其中调用 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];
}
}
感谢您的帮助!
【问题讨论】:
-
我假设您实际上在日志中看到了
go to page,所以您知道正在调用goToPage。原始 URL 和新 URL 是否相同?如果您将newURL(在NSURL URLWithString:中)替换为@"http://www.google.com/",来自goToPage的呼叫是否有效? -
哈哈,如果我不检查明显的内容,我就不会发布它:) 事实上,我知道该函数正在执行,并且我确定新的 URL 没有被加载。不过,我确实解决了一半的问题。当我改变 [ptr goToPage];到 [self goToPage];它开始工作但是......我仍然需要从另一个班级打电话给它。当我像这样创建对象时: SecondViewController *ptr = [[SecondViewController alloc] init];该函数被执行,但是 webview 没有被激活。 :(知道为什么吗?
-
secondView是如何设置的?也许存在保留/释放/自动释放问题? -
我真的不知道那是什么意思 :) 我这样设置:@interface SecondViewController : UIViewController { IBOutlet UIWebView *secondView; }
-
所以
secondView是您在Interface Builder 中连接的IBOutlet(从SecondViewController实例的IBOutlet连接到实际的UIWebView)。在之前的评论中,您说[self goToPage]有效,但是当您从SecondViewController之外的其他地方调用它时,它不起作用。您能否编辑您的问题以包含调用goToPage的不起作用的代码?
标签: iphone objective-c uiwebview methods