2013-07-10 2 views
0

Я пытаюсь передать данные в webViewController с использованием метода prepareForSegue, который выглядит как:Trouble Передача Via данных 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 

T проблема в том, что мой URL-адрес равен нулю. Может кто-нибудь сказать мне, почему?

+0

Как заявляется ваше свойство URL? Сильные? Слабое? –

+0

Слабый, см. Обновленный код. – BlackHatSamurai

+0

@ Николас Харт, вы его исправили! Если вы добавите это в качестве ответа, я соглашусь. – BlackHatSamurai

ответ

1

Для ваших элементов пользовательского интерфейса обычно нормально объявлять их слабыми, потому что ваш вид сохранит их. Для ваших других иваров вы хотите объявить их сильными, чтобы ваш экземпляр класса сохранил их. В этом конкретном случае ваше свойство url является слабым, поэтому NSURL не был сохранен и был установлен на нуль после того, как scopeForSegue: сфера охвата исчезла.

+1

Я в основном сказал то же самое :( – JohnVanDijk

0

Вы обязательно столкнетесь с подобными проблемами с помощью prepareForSegue. я предлагаю вам сохранить сильные экземпляры данных, которые вы хотите передать в источнике, как:

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

, а затем в prepareForSegue только сделать это:

destViewController.url = tempURL; 

я испытал подобные проблемы раньше, это кажется, решает его. У меня нет четкой картины о причине этого.

Смежные вопросы