2010-10-04 54 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]; 
相关问题