Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在Web视图中加载不同的URL_Ios_Objective C_Webview - Fatal编程技术网

Ios 在Web视图中加载不同的URL

Ios 在Web视图中加载不同的URL,ios,objective-c,webview,Ios,Objective C,Webview,我有一个应用程序,我想按下一个按钮,让用户进入一个网络视图。但是,我希望根据按下的按钮加载特定页面。最初我想为每个按钮创建一个单独的web视图,但这只会导致更多的问题,我将不深入讨论。所以我的问题是:如何根据是否按下某个特定按钮,将不同的URL加载到web视图中 我曾想过使用prepareForSegue方法,但认为这可能会使事情变得过于复杂。任何方向都很好。这是.h和.m文件的代码 创建一个XIB,将UIWebView放在上面,并将其绑定到类 对于头文件 #import <UIKit/U

我有一个应用程序,我想按下一个按钮,让用户进入一个网络视图。但是,我希望根据按下的按钮加载特定页面。最初我想为每个按钮创建一个单独的web视图,但这只会导致更多的问题,我将不深入讨论。所以我的问题是:如何根据是否按下某个特定按钮,将不同的URL加载到web视图中


我曾想过使用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视图。