Xcode 5在新的View Controller中加载URL,其中包含WebView

Ali*_*ioo 3 xcode objective-c webview ios xcode5

似乎早期版本的Xcode中的所有方法都不适用于我.

我现在
拥有的:我有一个带有按钮的主菜单,该按钮可以使用带有WebView的不同控制器进入另一个视图(具有属性,因此可以设置要加载的URL)

我想要的:当我从该按钮加载该视图时,我想将第一个视图中的字符串传递给代表URL的新视图,并将其加载到Web视图中.基本上我想要一个通用的WebView视图,它可以加载由视图传递给它的不同URL.

这是WebView H文件的代码

#import <UIKit/UIKit.h>

@interface BRWebView : UIViewController
{
    IBOutlet UIWebView *requestWebView;

}
@property (strong, nonatomic) NSString *loadUrl;

@end
Run Code Online (Sandbox Code Playgroud)

在MainMenu的ViewController中,按钮监听器有这个

-(IBAction)requestButton:(id)sender
{
    BRWebView *web = [self.storyboard    instantiateViewControllerWithIdentifier:@"BRWebView"];
    web.loadUrl = @"Websitename.com";
    [self presentModalViewController:web animated:YES];

}
Run Code Online (Sandbox Code Playgroud)

在BRWebView.m文件中有这个

- (void)viewDidLoad
{

    [super viewDidLoad];

    NSURL *url = [NSURL URLWithString:_loadUrl];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [requestWebView loadRequest:request];
}
Run Code Online (Sandbox Code Playgroud)

Jor*_*tel 6

在问题中的代码后编辑:

ViewController替换您的代码:

- (IBAction)requestButton:(id)sender
{
    BRWebView *web = [self.storyboard instantiateViewControllerWithIdentifier:@"BRWebView"];
    web.loadUrl = @"http://websitename.com";
    [self presentViewController:web animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)

并在viewDidLoad中BRWebView.m删除您的代码并添加viewWillAppear:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    // URL Request Object
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:[NSURL URLWithString:_loadUrl]];

    // Load the request in the UIWebView
    [_requestWebView loadRequest:requestObj];
}
Run Code Online (Sandbox Code Playgroud)

老答案:

您需要使用这样的属性传递您的URL数据(没有导航控制器):

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"showDetail"]) 
    {
        // Get reference to the destination view controller
        ViewControllerB *viewControllerB = segue.destinationViewController;

        // Pass URL
        viewControllerB.webviewURL = @"http://myurl.com";
    }
}
Run Code Online (Sandbox Code Playgroud)

带导航控制器:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"showDetail"]) 
    {
        UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
        ViewControllerB *viewControllerB = (ViewControllerB *)navController.topViewController;

        // Pass URL
        viewControllerB.webviewURL = @"http://myurl.com";
    }
}
Run Code Online (Sandbox Code Playgroud)

在你的第二个观点.h:

@property (nonatomic, strong) NSString *webviewURL;
Run Code Online (Sandbox Code Playgroud)

第二种观点.m:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    // URL Request Object
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:[NSURL URLWithString:_webviewURL]];

    // Load the request in the UIWebView
    [self.webView loadRequest:requestObj];
}
Run Code Online (Sandbox Code Playgroud)