2013-12-17 141 views
4

我正在下載排隊系統下載視頻。處理下載的排隊代碼在另一個視圖控制器中。現在的問題是如何傳遞下載到其他視圖的URL,而不推到另一個這樣的視圖控制器:如何將數據從一個視圖傳遞到下一個視圖?

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

我也知道有通過委託的方式,但你不也得重量的視角被呼籲?

編輯 我有,我要發送到另一個viewconntroller的NSURL。我知道有協議或上述方法的方法。不過,我不想呈現視圖控制器來發送信息。我只是想在按下按鈕時立即發送它,而不必轉到視圖本身

+1

你能解釋一下嗎?我真的不明白你想做什麼。 – Neva

+0

@Neva我已編輯帖子 – user2874682

回答

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,然後設置URL變量稱爲請求所發送的字符串。

在我的第一viewconntroller然後我需要調用-(void)語句,這樣我...

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

這段代碼我在-(IBAction)這讓我送變量或字符串時的地方,我呼籲採取行動。這成功地允許下載URL通過課程發送。

非常感謝您的幫助。

+0

這個回答是錯誤的:每次添加一個URL時,你都會繼續爲'secondviewconntroller'分配一個新的實例,所以不可能將第二個URL添加到同一個視圖控制器中:這將會是一個新的每次添加URL時創建的實例。請注意,這與我在我的第一個回答中說過的內容幾乎一樣,現在已經刪除,對此,我回答說「顯然沒有讀過這個問題」。 – dasblinkenlight

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 

很顯然,記得在頭文件中聲明這個初始值設定項。

2

我不想呈現viewconntroller來發送信息。我只想在按下按鈕時立即發送它,而不必去查看本身

通常,您不能這樣做:您可以將數據發送回視圖控制器鏈,但可以向前發送它只有當您呈現您向其發送數據的視圖控制器時。

您需要採取不同的方法來解決您的問題:不是將信息發送到另一個視圖控制器,而是將該數據發送到其他視圖控制器可以找到的數據。這個「常見的地方」通常被稱爲模型(在模型 - 視圖 - 控制器的意義上)。使用URL隊列創建一個單例對象,並從第一個視圖控制器中調用其方法addUrl:。然後第二個視圖控制器可以調用getUrlQueue方法來檢查所有排隊的URL。

Illustration

+0

感謝您的答案,但我將如何去連續檢查與想要從不同的角度發送的網址的變化 – user2874682

+0

我剛剛發佈了我自己的答案,這是一個解決方案,併發布了代碼我接受了。 – user2874682

相關問題