0

次のようなメソッドwebViewControllerを使用してデータをに渡そうとしています。prepareForSegue

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([segue.identifier isEqualToString:@"RBOM"])
    {
        WebViewController *destViewController = segue.destinationViewController;
        destViewController.url = [NSURL URLWithString:@"https:myURL.com/Articles.asp?ID=274"]; 
    }
    if([segue.identifier isEqualToString:@"Home"])
    {
        WebViewController *destViewController = segue.destinationViewController;
        destViewController.url = [NSURL URLWithString:@"http://www.myURL.com"];
    }
}

私のwebViewControllerクラスが次のように見える理由は次のとおりです。

#import "WebViewController.h"

@interface WebViewController ()

@end

@implementation WebViewController
@synthesize webView;
@synthesize url; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.navigationController setNavigationBarHidden:NO];
    self.title = @"MyURL.com";
    self.webView.delegate = self;
    NSLog(@"URL: %@", self.url); <---- This is null


    NSURLRequest *requestURL = [NSURLRequest requestWithURL:url];
    [self.webView loadRequest:requestURL];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

@end

は次のwebViewController.hとおりです。

#import <UIKit/UIKit.h>

@interface WebViewController : UIViewController <UIWebViewDelegate>
@property (weak, nonatomic) IBOutlet UIWebView *webView;
@property (weak, nonatomic) NSURL *url; 



@end

問題は、私の URL が null であることです。誰かが理由を教えてもらえますか?

4

2 に答える 2

0

prepareForSegue を使用すると、この種の問題に遭遇することになります。ソースに渡したいデータの強力なインスタンスを次のように保持することをお勧めします。

NSURL *tempURL = [NSURL URLWithString:@"https:myURL.com/Articles.asp?ID=274"];

そして、prepareForSegue でこれを行うだけです:

destViewController.url = tempURL;

以前にも同様の問題が発生しましたが、これで解決するようです。この理由については明確なイメージがありません。

于 2013-07-10T04:11:25.380 に答える