0

在我的 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 的实例而不是容器来尝试做事。

我开始将所有内容传递给下载功能,但它开始闻起来不对劲。我应该尝试代表吗?中级班?放弃并回到老路?

4

1 回答 1

0

您的 Cell 成为新的容器,您可能可以将您在 detailview 中的许多代码直接移动到UITableViewCell. 如果你没有UITableViewCell为你的单元子分类,你可能需要,虽然你可以从外部完成所有事情,但如果你在一个子类中完成它们,事情会更好地分离和清晰。

在那个子类中,您应该能够做与在 tableview 中所做的几乎相同的事情,您可能最终会想要阻止用户只是点击大量单元格来触发下载或排队,但那是你应该能够在第一步中学习的东西。

UITableViewDelegate提供一个函数tableView:-[did|will]selectRowAtIndexPath:,您可以使用它来查找已选择的单元格的实例,并在必要时触发该单元格的下载过程。您从自定义单元格内部完成的任何视图更新。

于 2013-01-10T13:36:16.667 回答