在我的xcode应用程序中,我之前设置的内容如下:
主要显示 - >剧集视图表 - >剧集详细视图
当用户在UITableView中选择了一集时,会加载详细视图。然后详细视图提供了一些新功能,例如下载相应的文件。这个下载是通过我创建的帮助程序类来处理的,当用户点击详细视图上的按钮时启动。这一切都运行正常。
但是因为在详细视图中确实没有太多新信息,所以我开始尝试将它全部放到表视图的单元格中。现在,当用户单击一个单元格时,单元格高度会扩展并显示额外信息。
所以我的问题是这个。如何处理我以前从详细信息视图中调用的方法,比如下载文件?
例如,我的功能用于下载相关文件:
- (IBAction)downloadTheFile:(id)sender {
self.downloadProgress.hidden = false;
self.downloadButton.hidden=true;
[self.myEpisodeDownloader getFileFromURL:[self.currentEpisode epFileURL] withIndicator:[self downloadProgress]];
}
当我尝试将其转移到新方法中时,我对传递给它的内容以及它如何访问不同的东西感到困惑。 基本上,在丢失“详细视图”时,我丢失了一个容器。您可以在我的函数中看到我使用“self”来获取和修改不同的东西。现在,我没有容器,而是尝试使用cellForRowAtIndexPath实例。
我开始将所有内容传递给下载功能的路径,但它开始闻到错误。我应该尝试代表吗?中介班?放弃并回到过去的方式?
答案 0 :(得分:0)
您的Cell成为新容器,您可以将详细视图中的大量代码直接移动到UITableViewCell
的子类中。如果你没有将UITableViewCell
子类化为你的单元格,你可能需要,虽然你可以从外部完成所有事情,如果你在子类中完成它们,事情会更好地分离和清晰。
在那个子类中你应该能够完成你在tableview中所做的相同的事情,你可能最终会想要阻止用户只是点击大量的单元来引发下载或排队,但这是你应该能够在第一步中进入的东西。
UITableViewDelegate
提供了一个函数tableView:-[did|will]selectRowAtIndexPath:
,您可以使用它来查找已选择的单元格的实例,并在必要时触发该单元格的下载过程。您从自定义单元格内部完成的任何视图更新。