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

时间:2014-02-25 18:39:13

标签: ios

我有以下代码将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);
    }
}

我有以下代码检查它是否有网址并加载网页视图

StoreWebViewController.m

- (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是一个字符串并加载网页,但在设备上它是零并且不加载页面。

输入http://google.com的设备输出

2014-02-25 14:05:48.883 PHP Point Of Sale[2784:60b] (null)
2014-02-25 14:05:48.970 PHP Point Of Sale[2784:60b] (null)

http://google.com的模拟器输出

2014-02-25 14:09:10.703 PHP Point Of Sale[31811:70b] http://google.com
2014-02-25 14:09:10.775 PHP Point Of Sale[31811:70b] http://google.com

1 个答案:

答案 0 :(得分:0)

我对storeUrl有一个弱引用。我将它改为强,现在它可以在模拟器和设备中使用。