2010-10-04 69 views
0

基本上,我卡在哈哈。我有一個視頻下載頁面。它有一個UIProgressView欄。UITableViewController - 在didSelectRowAtIndexPath上調用類的SAME init

當用戶在表格視圖中選擇一行時,它會調用VideoPage *page = [[VideoPage alloc] initWithVideoId:[indexPath row]],然後將該視圖控制器壓入視圖堆棧。然後該頁面開始下載,並依次進入進度視圖。

現在,如果用戶按下導航控制器並返回到視頻列表,然後再次選擇SAME行,它將啓動此頁面的新版本,這意味着頁面的init始終更新UIProgressView將永遠丟失。

有沒有辦法解決這個問題?如果問題很模糊,我很抱歉。基本上,如果我已經初始化一個videoId = 3的視圖控制器,那麼我不想再啓動另一個視圖控制器,我只想再次推送當前視圖,以便UIProgressView仍然顯示。

感謝您給我的任何幫助。 :)

回答

1

可以保持對它的引用您的視圖控制器,並將其存儲在由行索引或東西鍵控字典,然後只要單擊行,你可以檢查鑰匙在字典中存在,如果它那麼你只是得到的價值和重新壓入堆棧,如果它不存在,然後創建它,並將其添加到字典,並將其推入堆棧...

在閱讀您的評論,聽起來像你需要有一些下載管理器類,將處理您在後臺下載...我的建議是使一些單身人士班,管理下載,這個類應該保持每個電影下載,用戶發起的狀態,whe在它重新創建視圖控制器的時候,您應該與經理覈對以確定是否已經啓動了某個下載(如果已經啓動),然後使用下載管理器中的數據將視圖控制器置於預期狀態。

+0

我試過 - 問題是,如果他們回去的話,那麼當他們回來時,這個變量會丟失 - 讓我們說你是3視圖下視圖堆棧,你初始化一個視圖控制器 - 然後回到以前的看法是有效的。但是,如果你再回到一個視圖,那麼再回到視圖中,那麼這將無法正常工作。 :( – 2010-10-04 14:33:57

+0

檢查出我的編輯.. – Daniel 2010-10-04 14:53:32

+0

多數民衆贊成在一個好主意...... :)我將如何訪問該類,但?我會在哪裏創建它的實例?在應用程序委託? – 2010-10-05 09:41:45

0

檢查您的viewController(推入的)是否爲零或在您推新的之前。

if (viewController == nil) LoginViewController *viewController = [[LoginViewController alloc] initWithNibName:@"LoginView" bundle:nil]; 

[self.navigationController pushViewController:viewController animated:YES];  [viewController release]; 
相關問題