如何将数据从一个视图传递到下一个视图?

时间:2013-12-17 16:55:05

标签: ios objective-c

我正在制作下载排队系统来下载视频。处理下载的排队代码在另一个viewconntroller中。现在我的问题是如何将下载的URL传递给另一个视图,而无需推送到另一个视图控制器,如下所示:

 ViewConntroller *View = [[ViewConntroller alloc] init];
    view.url = ""
   [self presentModalViewController:View animated:NO];

我也知道代表们有一种方式,但是你也不必为了要求观点而加权吗?

修改 我有一个NSURL我要发送到另一个viewconntroller。我知道有协议的方法或上面的方法。但是我不想提供viewconntroller来发送信息。我只想在按下按钮后立即发送它而不进入视图本身

3 个答案:

答案 0 :(得分:2)

  

我不想提供一个viewconntroller来发送信息。我只想在按下按钮后立即发送它而不进入视图本身

通常,您不能这样做:您可以将数据发送回视图控制器链,但只有在您呈现发送数据的视图控制器时才可以向前发送数据。

您需要采用不同的方法来解决您的问题:不是将信息发送到另一个视图控制器,而是将该数据发送到公共场所,一旦呈现它就可以被另一个视图控制器找到。这个“公共场所”通常被称为 Model (在模型 - 视图 - 控制器意义上)。使用URL队列创建单个对象,并从第一个视图控制器调用其addUrl:方法。然后,第二个视图控制器可以调用getUrlQueue方法来检查所有排队的URL。

Illustration

答案 1 :(得分:2)

我想通了,然后我通过调用另一个视图的-(void)语句发送了一个网址。

例如:

在secondviewconntroller.h文件中,我会设置一个无效声明......

-(void)addDownloadRequest:(NSString *)request;

这行代码意味着可以在其他类和viewconntrollers中调用它。

然后在我的 secondviewconntroller.m 文件中,我会将-(void)设置为我想要调用的函数,因此在我的情况下我想使用url下载所以...

-(void)addDownloadRequest:(NSString *)request{
    NSLog(@"Called");
    NSString *URL = request;
    ///Download code here now i have the URL
}

上面的代码将表单中发送的URL作为名为request的字符串获取,然后将URL变量设置为名为request的已发送字符串。

在我的第一个 viewconntroller 中,我需要调用-(void)语句,以便我......

secondviewconntroller *theVIEW=[[secondviewconntroller alloc]init];
[theVIEW addDownloadRequest:@"The URL or STRING wanting to be sent"]; 

这段代码我放在一个-(IBAction)中,它允许我在调用动作时发送变量或字符串。这成功地允许通过课程发送下载URL。

感谢您的所有帮助。

答案 2 :(得分:1)

定义实例变量和自定义init方法来设置它们。像这样:

@implementation MyViewController {
  id data1;
  id data2;
}
-(id)initWithData1:(id)d1 data2:(id)d2 {
  self = [super init];
  if(self) {
    data1 = d1;
    data2 = d2;
  }
  return self;
}
@end

显然,请记住在标题中声明此初始值设定项。