如何将NSURL对象从一个viewcontroller传递到另一个viewcontroller

时间:2013-08-20 09:56:03

标签: ios objective-c

我在NSURL类中有一个ScanViewController对象,并将其传递给ListViewController类。

NSURL *url = [NSURL URLWithString:@"http:// some url"];

我在我的项目中使用xib,但找不到

的替代方法
[self.storyboard instantiateViewControllerWithIdentifier:]

[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
    if(error || !data)
    {
        NSLog(@"JSON NOT posted");
    }
    else
    {
        NSLog(@"JSON data posted!");
        id jsonObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:Nil];

        if([jsonObject respondsToSelector:@selector(objectForKey:)])
        {
            NSDictionary *dictionaryForUserID = [jsonObject valueForKey:@"ProjID"];
            NSLog(@" Project Id = %@", dictionaryForUserID);

            NSURL *urlToDisplayInListView = [NSURL URLWithString:[NSString stringWithFormat:@"http://some url/%@", dictionaryForUserID]]; **//Pass this object to other viewcontroller**

        }
    }
}];

1 个答案:

答案 0 :(得分:5)

我假设您正在从一个VC到另一个VC执行segue。如果是这样,您可以使用prepareForSegue:sender:方法执行此操作:

if ([segue.identifier isEqualToString:@"segueToListViewController"]) {
    [(ListViewController *)segue.destinationViewController setURL:[NSURL URLWithString:@"http:// some url"]];
}

您必须在目标VC中声明一个属性来处理URL,并且您需要一个访问器方法来设置该属性。

修改

正如danypata建议的那样,如果您不使用segues,请尝试以下

ListViewController *listViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"ListViewControllerIdentifier"];
[listViewController setURL:[NSURL URLWithString:@"http:// some url"]];
[self presentViewController:listViewController animated:YES completion:nil];