如何处理从UITableCell调用的方法?

时间:2013-01-10 13:23:39

标签: ios objective-c uitableview

在我的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实例。

我开始将所有内容传递给下载功能的路径,但它开始闻到错误。我应该尝试代表吗?中介班?放弃并回到过去的方式?

1 个答案:

答案 0 :(得分:0)

您的Cell成为新容器,您可以将详细视图中的大量代码直接移动到UITableViewCell的子类中。如果你没有将UITableViewCell子类化为你的单元格,你可能需要,虽然你可以从外部完成所有事情,如果你在子类中完成它们,事情会更好地分离和清晰。

在那个子类中你应该能够完成你在tableview中所做的相同的事情,你可能最终会想要阻止用户只是点击大量的单元来引发下载或排队,但这是你应该能够在第一步中进入的东西。

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