1

我有一个 UIWebView,其内容是从 Last.fm API 调用中填充的。

此内容包含链接,其中许多是通过解析来自 URL 的信息来处理的:

- (BOOL)webView:(UIWebView *)aWbView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;

…并将该信息传递给适当的视图控制器。

当我无法处理 URL 时,我想在堆栈上推送一个新的视图控制器并将网页加载到那里的 UIWebView 中。

Three20 中的TTWebController看起来很有前途,因为它还实现了导航工具栏、加载指示器等。

也许我天真地认为我可以使用这个控制器在我的应用程序中显示 Web 内容,而无需在整个应用程序中实现 Three20。我按照 github 上的说明将 Three20 添加到我的项目中,并添加了以下代码来处理 shouldStartLoadWithRequest 中的 URL:

TTWebController* browser = [[TTWebController alloc]init];
[browser openURL:@"http://three20.info"]; //initially test with this URL
[self.navigationController pushViewController:browser animated:YES];

但是,这会使我的应用程序崩溃,并发出以下通知:

*** -[TTNavigator setParentViewController:]: unrecognized selector sent to instance 0x3d5db70

我还需要做什么才能在我的应用程序中实现 TTWebController?

或者您知道我可以使用替代的视图控制器模板来代替 Three20 实现吗?

4

1 回答 1

0

这对我有用:

NSURL *myURL = [[NSURL alloc] initWithString:@"http://www.google.com"];
MyWebView *webBrowser = [[MyWebView alloc] initWithNavigatorURL:myURL query:nil];
[myURL release];
[self.navigationController pushViewController:webBrowser animated:YES];

其中 MyWebView 只是 TTWebController 的一个简单子类

于 2010-05-20T12:38:06.240 回答