如何将NSURL从一个类传递到另一个类?

时间:2014-07-18 09:43:01

标签: ios objective-c uisplitviewcontroller nsurl

我正在构建一篇阅读文章的iOS应用。在iPad我使用分割视图控制器,我想通过传递不同的URL来更新主视图控制器中的不同单元格上的详细视图控制器。 我无法将NSURL从一个类传递到另一个类到加载详细信息视图控制器(UITableView)

ysMaster.h

   @property (strong, nonatomic) NSURL *ysURL;

ysMaster.m:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {


  switch (indexPath.row)
  {
      case 0:
          [self performSegueWithIdentifier:@"Show1" sender:self];
          _ysURL = [NSString stringWithFormat:@"http://you.com/234234"];
      break;

      case 1:
          [self performSegueWithIdentifier:@"Show2" sender:self];
         _ysURL=[NSURL URLWithString:@"http://goal.com/99099"];
      break;

      case 2:
          [self performSegueWithIdentifier:@"Show3" sender:self];
          _ysURL=[NSURL URLWithString:@"http://gggg.com/99099"];
      break;

      }

   }


     - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(NSString *)sender{
    if ([segue.identifier isEqualToString:@"Show1"])
    {

    ysDetail *dest = segue.destinationViewController;
    dest.ysURL=sender;
      }

    if ([segue.identifier isEqualToString:@"Show2"])
    {

      ysDetail *dest = segue.destinationViewController;
      dest.ysURL=sender;
      [dest setURL:_ysURL];
     }

    if ([segue.identifier isEqualToString:@"Show3"])
   {

    ysDetail *dest = segue.destinationViewController;
    dest.ysURL=sender;
      }


    }

ysDetail.h:

   @property (strong, nonatomic) NSURL *url;

ysDetail.m:

    NSData* data = [NSData dataWithContentsOfURL:_url];
    NSLog(@"uuuuuuuuu%@",_url);   //url prints null

2 个答案:

答案 0 :(得分:0)

您可以通过self.splitViewController从masterViewController获取SplitViewController 然后你可以将detailViewController作为

  DetailViewController *detailViewController = (DetailViewController*)self.splitViewController.viewControllers[1];

  detailViewController.url = yourURL;

答案 1 :(得分:0)

尝试创建ysDetail对象,然后使用ysDetail类创建一个方法,该类是Url的getter。

-(void)getUrl:(NSURL)url;

并创建一个对象:

@Property ysDetail *detailClass;