2014-04-10 53 views
1

數據不是從一個VC傳遞到另一個,不能爲我的生活弄清楚。我試圖通過NSURL或NSURLRequest,當我註銷第二個VC上的請求/ url對象時,我得到空值。iOS segues數據未被傳遞

首先VC.h

#import <UIKit/UIKit.h> 
#import "ILAuthClient.h" 
#import "ILAuthLoginViewController.h" 

@interface ILViewController : UIViewController 

@property (strong, nonatomic) NSString *string; 
@property (strong, nonatomic) NSURL *request; 
@end 

首先VC.m(相關部分)

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if ([segue.identifier isEqualToString:@"authLogin"]){ 
     NSURL *url = [self authenticateWithInstagram]; 
     ILAuthLoginViewController *authModal = [[ILAuthLoginViewController alloc]init]; 
     authModal.delegate = self; 
     authModal.url = url;} 

二VC.h

#import <UIKit/UIKit.h> 

@interface ILAuthLoginViewController : UIViewController <UIWebViewDelegate> 

@property (strong, nonatomic) IBOutlet UIWebView *webView; 
@property (strong, nonatomic) NSURLRequest *request; 
@property (strong, nonatomic) NSURL *url; 
@property (strong, nonatomic) NSString *string; 

@end 

二VC.m

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
    self.webView.delegate = self; 
    self.request = [[NSURLRequest alloc]initWithURL:self.url]; 

    [self.webView loadRequest:self.request]; 
    NSLog(@"Request %@", self.request); 

} 

回答

3

當你進入prepareForSegue您第二個視圖控制器已經分配給您,並且可以作爲segue上的destinationViewController屬性。您正在分配一個新的屬性並分配屬性,但不使用此對象。

你的方法應該是

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if ([segue.identifier isEqualToString:@"authLogin"]){ 
     NSURL *url = [self authenticateWithInstagram]; 
     ILAuthLoginViewController *authModal = (ILAuthLoginViewController *)segue.destinationViewController; 
     authModal.delegate = self; 
     authModal.url = url; 
    } 
} 
3

這條線......

ILAuthLoginViewController *authModal = [[ILAuthLoginViewController alloc]init]; 

應改爲此

ILAuthLoginViewController * authModal = (ILAuthLoginViewController *) segue.destinationViewController; 

一個你alloc ING是不是一個故事板正在呈現

3

兩件事情來檢查。

1.在通過segue時,您的呼叫是錯誤的。它應該是

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
     if ([segue.identifier isEqualToString:@"authLogin"]){ 
      NSURL *url = [self authenticateWithInstagram]; 
      ILAuthLoginViewController *authModal = (ILAuthLoginViewController *)segue.destinationViewController; 
      authModal.delegate = self; 
      authModal.url = url; 
     } 
} 

2.確保您url string很好地形成。

NSURL *url = [NSURL URLWithString:[@"YOURURL" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 

希望它的幫助。