我是ios开发中的真正菜鸟。现在我正在使用Zxing开展我的学习项目。
我创建了自己的项目,其中包括依赖第三方库(Zxing)。 一旦我扫描包含内部URL的QRCode,我的项目将调用Zxing库中的一个类,然后提醒alertView。 之后,一旦我点击弹出alertView上的打开按钮,它将通过激活Safari打开该URL。
Zxing的代码如下:
//============================================================
- (void)openURL {
[[UIApplication sharedApplication] openURL:self.URL]; //<===== open URL by Safari browser.
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex != [alertView cancelButtonIndex]) {
// perform the action
[self openURL];
}
}
//========================================================
但是,我希望我能在我自己的webView中打开该URL,这个URL由Interface Builder在我的“自己的项目”中构建,而不是由Safari构建。你有什么建议吗?我必须编写什么(void)openURL {}?我坚持了3天这个问题,现在我似乎疯了[ p ]
非常感谢你的帮助。
干杯,
答案 0 :(得分:0)
我做的是做一个新的视图控制器,里面有webView。在OpenURL方法启动时设置的属性URLtring。如果需要,您必须实现webView的委托方法。我正在使用的代码是
WebViewCOntroller.h中的
@interface WebViewController : UIViewController <UIWebViewDelegate>{
IBOutlet UIWebView *webView;
UIView *activityView;
}
@property (nonatomic, retain) NSString *buyProductLink;
@end
WebViewController.m中的
- (void)viewDidLoad {
[super viewDidLoad];
webView.scalesPageToFit = YES;
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:self.buyProductLink]];
[webView loadRequest:request];
[request release];
}
- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
return YES;
}
- (void) webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
[activityView removeFromSuperview];
}
- (void) webViewDidFinishLoad:(UIWebView *)webView {
[activityView removeFromSuperview];
[activityView release]; activityView = nil;
}
在openURL方法中使用
WebViewController *webViewVC = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:nil];
webViewVC.buyProductLink = [NSString stringWithFormat:@"%@",result];
[self.navigationController pushViewController:webViewVC animated:YES];