数据没有从一个VC传递到另一个VC,在我的生活中无法解决这个问题。我尝试传递NSURL或NSURLRequest,当我在第二个VC上注销请求/ url对象时,我得到null。
第一个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);
}
答案 0 :(得分:3)
这一行...
ILAuthLoginViewController *authModal = [[ILAuthLoginViewController alloc]init];
应更改为此
ILAuthLoginViewController * authModal = (ILAuthLoginViewController *) segue.destinationViewController;
你alloc
的那个人不是故事板所呈现的那个
答案 1 :(得分: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;
}
}
答案 2 :(得分: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]];
希望它有所帮助。