gpt4 book ai didi

html - Three20显示本地html文件

转载 作者:行者123 更新时间:2023-11-29 11:22:32 25 4
gpt4 key购买 nike

我正在尝试显示来自 three20 表 Controller 的本地 html 文件。该表正确显示,但当我选择该项目时,我得到的只是一个空白屏幕。如果我使用外部 URL,页面会正确显示。我没有尝试使用 UIWebView,但我想知道是否有使用 Three20 框架的简单方法。

谢谢。

最佳答案

编辑:我忘记了 that has changed最近……

假设您已经通过这种方式在您的导航器中注册了一个 TTWebController :

TTNavigator* navigator = [TTNavigator navigator];
TTURLMap* map = navigator.URLMap;
[map from:@"*" toViewController:[TTWebController class]];

您可以通过这种方式简单地打开本地 html 文件:

NSString *creditsPath = [[NSBundle mainBundle] pathForResource:@"credits" ofType:@"html"];
NSURL *url = [NSURL fileURLWithPath:creditsPath];
TTOpenURL([url description]);

然后您所要做的就是将 TTTableLinkedItem 或子类(几乎所有的 TT*Cell 都是)添加到您的数据源,并使用这样的本地文件 URL:

NSString *creditsPath = [[NSBundle mainBundle] pathForResource:@"credits" ofType:@"html"];
NSURL *url = [NSURL fileURLWithPath:creditsPath];
TTTableTextItem *item = [TTTableTextItem itemWithText:@"foobar" URL:[url description]];

比我之前写的简单多了...

ENDOFEDIT

忘记下面的内容,除非您对其他解决方案感兴趣...(更复杂...或不复杂,请参阅最后一个)


基本上,这是在 UIWebView 中加载内容的方式:

NSString *creditsPath = [[NSBundle mainBundle] pathForResource:@"credits" ofType:@"html"];
NSURL *url = [NSURL fileURLWithPath:creditsPath];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[webView loadRequest:urlRequest];

three20 TTWebController 可以在查询中接受请求:

- (id)initWithNavigatorURL:(NSURL*)URL query:(NSDictionary*)query {
if (self = [self initWithNibName:nil bundle:nil]) {
NSURLRequest* request = [query objectForKey:@"request"];
if (nil != request) {
[self openRequest:request];
} else {
[self openURL:URL];
}
}
return self;
}

因此,要在 TTWebController 中打开本地 html 文件,您可以这样做:

NSString *creditsPath = [[NSBundle mainBundle] pathForResource:@"credits" ofType:@"html"];
NSURL *url = [NSURL fileURLWithPath:creditsPath];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[[TTNavigator navigator] openURLAction:
[[[TTURLAction actionWithURLPath:@"url://to/your/ttwebcontroller"]
applyQuery:[NSDictionary dictionaryWithObject:ulrRequest
forKey:@"request"]]
applyAnimated:YES]];

现在是最后一部分,从 TTTableViewController 触发它...您在 ViewController 中要实现:

- (void)didSelectObject:(id)object atIndexPath:(NSIndexPath*)indexPath {
// there you retrieve a *TTTableItem* corresponding to your row
// and call previous snippet from URL...
// TTTableItem class has userInfo property you could use:
TTTableItem *item = (TTTableItem *)object;
NSString *htmlFile = item.userInfo.
[self openLocalHtmlFile:htmlFile];
}

希望对您有所帮助!没有任何测试,根本不应该编译或任何,但这是一个解决方案。

这是一个使用基本的 three20 + iOS 功能的解决方案。您还可以编写一个继承自 TTWebControllerTTCustomWebController,它会采用像 @"myapp://openLocalHtml?file=credits" 这样的 url,但不是那样的很难做到...

...这是草稿:

@interface TTCustomWebController : TTWebController {}
@end

@implementation TTCustomWebController

- (id)initWithFile:(NSString *)name {
self = [super init];
if (self) {
NSString *filePath = [[NSBundle mainBundle] pathForResource:name ofType:@"html"];
NSURL *URL = [NSURL fileURLWithPath:filePath];
[self openURL:URL];
}
return self;
}

@end

然后您可以简单地在您的数据源中使用 TTTableLinkedItem 指向这些 @"myapp://openLocalHtml?file=credits"...

祝你好运! :)

关于html - Three20显示本地html文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6232826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com