Ios 通过prepareForSegue传递数据可以在模拟器上工作,但不能在设备上工作

Ios 通过prepareForSegue传递数据可以在模拟器上工作,但不能在设备上工作,ios,Ios,我有以下代码将URL传递给加载URL的目标控制器 StoreURLViewController.m -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if([segue.identifier isEqualToString:@"continueToStore"]) { StoreWebViewController *controller = (StoreWebViewCont

我有以下代码将URL传递给加载URL的目标控制器

StoreURLViewController.m

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([segue.identifier isEqualToString:@"continueToStore"])
    {
        StoreWebViewController *controller = (StoreWebViewController *)segue.destinationViewController;

        NSString *url = self.storeUrl.text;
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        [defaults setObject:url forKey:@"storeUrl"];
        [defaults synchronize];

        controller.storeUrl = [StoreUrlViewController checkAndPrependProtocolForApiUrl:url];
        NSLog(@"%@", controller.storeUrl);
    }
}
- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"%@",self.storeUrl);
    if (self.storeUrl != nil)
    {
        [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[StoreWebViewController checkAndPrependProtocolForUrl:self.storeUrl]]]];
        self.webView.delegate = self;
    }    
}
我有下面的代码来检查它是否有url并加载web视图

StoreWebViewController.m

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([segue.identifier isEqualToString:@"continueToStore"])
    {
        StoreWebViewController *controller = (StoreWebViewController *)segue.destinationViewController;

        NSString *url = self.storeUrl.text;
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        [defaults setObject:url forKey:@"storeUrl"];
        [defaults synchronize];

        controller.storeUrl = [StoreUrlViewController checkAndPrependProtocolForApiUrl:url];
        NSLog(@"%@", controller.storeUrl);
    }
}
- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"%@",self.storeUrl);
    if (self.storeUrl != nil)
    {
        [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[StoreWebViewController checkAndPrependProtocolForUrl:self.storeUrl]]]];
        self.webView.delegate = self;
    }    
}
在模拟器上,URL是一个字符串并加载网页,但在设备上它是零且不加载网页

用于输入的设备输出

模拟输出


我对storeUrl的引用很弱。我将其更改为strong,现在它可以在模拟器和设备中工作。

检查
视图中的值将出现
。然后设置好了吗?您的设备运行的是比模拟器更旧的iOS版本吗?Views中的任何内容都不会出现。请同时检查segue标识符。在实际设备要求非常严格的情况下,模拟器倾向于稍微容忍一些变化。确保它在脚本中指定为
continueToStore
,而不是类似
continueToStore
的内容。如果segue标识符与
continueToStore
不匹配,我还建议使用
NSLog
在else语句中转储它。