Ios 在Web视图中加载不同的URL
我有一个应用程序,我想按下一个按钮,让用户进入一个网络视图。但是,我希望根据按下的按钮加载特定页面。最初我想为每个按钮创建一个单独的web视图,但这只会导致更多的问题,我将不深入讨论。所以我的问题是:如何根据是否按下某个特定按钮,将不同的URL加载到web视图中Ios 在Web视图中加载不同的URL,ios,objective-c,webview,Ios,Objective C,Webview,我有一个应用程序,我想按下一个按钮,让用户进入一个网络视图。但是,我希望根据按下的按钮加载特定页面。最初我想为每个按钮创建一个单独的web视图,但这只会导致更多的问题,我将不深入讨论。所以我的问题是:如何根据是否按下某个特定按钮,将不同的URL加载到web视图中 我曾想过使用prepareForSegue方法,但认为这可能会使事情变得过于复杂。任何方向都很好。这是.h和.m文件的代码 创建一个XIB,将UIWebView放在上面,并将其绑定到类 对于头文件 #import <UIKit/U
我曾想过使用prepareForSegue方法,但认为这可能会使事情变得过于复杂。任何方向都很好。这是.h和.m文件的代码 创建一个XIB,将UIWebView放在上面,并将其绑定到类 对于头文件
#import <UIKit/UIKit.h>
@interface NewWebViewController : UIViewController<UIWebViewDelegate> {
IBOutlet UIWebView *webView;
NSString *currentURL;
UIActivityIndicatorView *activityView;
}
@property (nonatomic, copy) NSString *currentURL;
@property (nonatomic, retain) UIActivityIndicatorView *activityView;
@end
这是怎么用的
- (void) openWebViewControllerWithURL:(NSString*) url {
if (!url) {
return;
}
NewWebViewController *vController = [[NewWebViewController alloc] initWithNibName:@"NewWebViewController" bundle:nil];
vController.currentURL = url;
[self.navigationController pushViewController:vController animated:YES];
[vController release];
}
单击按钮,只需传递要加载的URL
像这样
[self openWebViewControllerWithURL:@"http://www.google.com"];
为什么不链接IB中的按钮,只进行视图控制器页面的模式转换?然后,在新视图控制器上的viewdidload中,代码应该如下所示:
NSString *fullURL = @"google.com";
NSURL *url = [NSURL URLWithString:fullURL];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[_webView loadRequest:requestObj];
- (IBAction)button1Action:(UIButton*)sender
{
[self.webView loadRequest:[NSURLRequest requestWithURL:url1]];
}
- (IBAction)button2Action:(UIButton*)sender
{
[self.webView loadRequest:[NSURLRequest requestWithURL:url2]];
}
你有多少个按钮?如果只是一对,那么我只需要创建一对额外的视图控制器。如果是一堆,你可以创建一个全局变量,我已经听到了。。。并根据按下的按钮将变量设置为所需的URL。因此必须创建新的viewController,其中包含UIWebView。 在newViewController上创建一个名为url或类似的NSString属性 例如:
@property (retain, nonatomic) NSString *url;
@property (weak, nonatomic) IBOutlet UIWebView *webView;
在oldViewController中的按钮TouchInside事件上
UIStoryboard *mainStorybroad = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
newViewController *webViewController = [mainStorybroad instantiateViewControllerWithIdentifier:@"webviewIdentifier"];
webViewController.url = @"url string";
最后,在newViewController中,您只需执行以下操作:
[self.webView loadRequest:[NSURLRequest requestWithURL:url]];
如何根据是否按下特定按钮将不同的URL加载到web视图中
识别不同按钮有两种基本方法:
单独操作:您可以为每个按钮创建单独的操作方法,然后将每个按钮连接到相应的操作
单个操作:您可以为所有按钮创建单个操作,并使用按钮的某些属性来区分它们
第一个是这样的:
NSString *fullURL = @"google.com";
NSURL *url = [NSURL URLWithString:fullURL];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[_webView loadRequest:requestObj];
- (IBAction)button1Action:(UIButton*)sender
{
[self.webView loadRequest:[NSURLRequest requestWithURL:url1]];
}
- (IBAction)button2Action:(UIButton*)sender
{
[self.webView loadRequest:[NSURLRequest requestWithURL:url2]];
}
第二个看起来像:
- (IBAction)buttonsAction:(UIButton*)sender
{
switch (sender.tag) {
case button1Tag:
[self.webView loadRequest:[NSURLRequest requestWithURL:url1]];
break;
case button2Tag:
[self.webView loadRequest:[NSURLRequest requestWithURL:url2]];
break;
}
}
你是说你有一个视图控制器和一些按钮吗。当用户点击每个按钮时,系统将切换到相应的webView?是的,大多数情况下。我有一个带按钮的viewController。他们确实访问了不同的网络视图…这就是我尝试的。我希望我可以使用相同的web视图,只需加载不同的URL。web视图是在其他viewController上还是与按钮相同?因为如果在其他viewController中,准备segue将是正确的方法,这并不复杂viewController和按钮在一个视图中,并且希望加载一个新的WebView这基本上是我已经做过的。现在我只希望URL根据我使用的按钮的不同而有所不同。@Blaine我明白了。有几种方法可以实现这一点,包括您所述的prepareForSegue方法。当你尝试我答案中的方法,或者prepareForSegue方法时,发生了什么?如果你仍在寻求解决方案,我也可以在了解多一点后更新我的答案。我承认它非常彻底,写得很好;但是,我希望有一个更简单的解决方案。我相信它会的!这是一个很好的答案,这就是为什么我给它+1,所以请不要认为我不感激。@Blaine有什么比这个更简单的解决方案吗?如果您知道更简单的解决方案,请让我也知道。使用prepareForSegue不是更容易吗?prepareForSegue用于情节提要,而我的解决方案没有情节提要。如果您有两个不同的视图控制器,这是否有效?我有一个homeViewController和一个webViewController。这些按钮位于homeViewController上,希望将不同的URL加载到单个webViewController@Blaine工作正常,但是您不应该直接设置webview的请求,而应该告诉web视图的视图控制器这样做。可以是如下简单的内容:webViewController.url=url1;。您需要编写setUrl方法来创建URL请求并将其传递给web视图。