【发布时间】:2009-12-23 04:05:00
【问题描述】:
我有一个带有 2 个 UIViewControllers 的基于导航的应用程序(当用户选择使用 controller-1 显示的 UITableView 中的特定行时,controller-2 被推送到 controller-1 上)。
这里是“扭曲”...当控制器 1 加载时,我想将包含 HTML/javascript 的 URL“预取”到 UIWebView 中。最初,用户不会看到这个 UIWebView。相反,他们会看到一个 UITableView,允许他们点击 5 个不同的选项(row0、row1、row2、row3、row4)。
当用户选择一行时,我想将一个新视图推送到堆栈上并将 HTML/Javascript “传递” 到位于该新视图中的 UIWebView,并显示网页在新视图中。
UIWebView可以这样传吗?
我尝试了以下方法,它没有在 UIWebView 中显示 HTML,因此任何关于如何传递 UIWebView(或替代方法)的建议都会很棒。我很确定我在我的 nib 文件中为 controller2 建立了正确的连接。
解释我的动机。我想使用 javascript 来隐藏网页的某些元素,具体取决于用户单击的行。对我来说,发出 1 个 URL 请求然后使用 javascript 隐藏各种 HTML 元素比发出 5 个不同的 URL 请求、获取 5 个单独的网页更快、更容易。因此,如果对这种方法有其他想法,那也很棒。我曾考虑在 1 个视图控制器中完成所有这些操作(添加和删除子视图),但我宁愿推入一个新视图以利用导航控制器。
TYVM!!!!
////////// controller 1 //////////////////////
- (void)viewWillAppear:(BOOL)animated {
// do other stuff ///
NSURLRequest *request_object = [NSURLRequest requestWithURL:self.url];
[self.web_view1 loadRequest:request_object];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
self.view_controller2 = [[[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil] autorelease];
self.view_controller2.web_view2 = self.web_view1;
[self.navigationController pushViewController:self.view_controller2 animated:YES];
}
//////////// controller 1 //////////////////////
//
///////////// portion of controller 2 header file /////////////////////////
@interface ViewController2 : UIViewController {
IBOutlet UIWebView *web_view2;
}
@property (nonatomic, retain) IBOutlet UIWebView *web_view2;
//////////// portion of controller 2 implementation file //////////////
#import "ViewController2.h"
@implementation ViewController2
@synthesize web_view2;
- (void)dealloc {
[web_view2 release], web_view2 = nil;
[super dealloc];
}
//////////// controller 2 //////////////////////////
【问题讨论】:
标签: iphone objective-c iphone-sdk-3.0 uiwebview uinavigationcontroller