我正在制作下载排队系统来下载视频。处理下载的排队代码在另一个viewconntroller中。现在我的问题是如何将下载的URL传递给另一个视图,而无需推送到另一个视图控制器,如下所示:
ViewConntroller *View = [[ViewConntroller alloc] init];
view.url = ""
[self presentModalViewController:View animated:NO];
我也知道代表们有一种方式,但是你也不必为了要求观点而加权吗?
修改
我有一个NSURL
我要发送到另一个viewconntroller。我知道有协议的方法或上面的方法。但是我不想提供viewconntroller来发送信息。我只想在按下按钮后立即发送它而不进入视图本身
答案 0 :(得分:2)
我不想提供一个viewconntroller来发送信息。我只想在按下按钮后立即发送它而不进入视图本身
通常,您不能这样做:您可以将数据发送回视图控制器链,但只有在您呈现发送数据的视图控制器时才可以向前发送数据。
您需要采用不同的方法来解决您的问题:不是将信息发送到另一个视图控制器,而是将该数据发送到公共场所,一旦呈现它就可以被另一个视图控制器找到。这个“公共场所”通常被称为 Model (在模型 - 视图 - 控制器意义上)。使用URL队列创建单个对象,并从第一个视图控制器调用其addUrl:
方法。然后,第二个视图控制器可以调用getUrlQueue
方法来检查所有排队的URL。
答案 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
显然,请记住在标题中声明此初始值设定项。