调用相同的视图控制器但需要不同的操作

Posted

技术标签:

【中文标题】调用相同的视图控制器但需要不同的操作【英文标题】:Calling same view Controller but need different actions 【发布时间】:2012-06-06 13:36:24 【问题描述】:

我有一个视图控制器,其中包含一个 UITableView 中的类别列表。我将此视图控制器推送到其他三个视图控制器中。所以当我不希望发生这种情况时,tableView 的相同功能将被应用.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
 
self.index = indexPath;
[retrieveName getItemName:[self.arrayForCategories objectAtIndex:indexPath.row]];
[self dismissModalViewControllerAnimated:YES];
[tableView reloadData];

这个方法应该只在从一个视图控制器调用时才有效。有什么想法吗??

【问题讨论】:

【参考方案1】:

在您推送的视图控制器中放置一个属性,以确定它在选择时应该做什么。让推动它的视图控制器设置属性。检查您显示的方法开始处的属性值。

【讨论】:

我想......但是如果没有看到你的控制器,我真的无法告诉你把它放在哪里。答案的哪一部分你不明白怎么写? 我是 iphone 开发新手。所以我对要设置什么属性感到困惑。任何粗略的例子都会有所帮助!【参考方案2】:

您可以子类化视图控制器,并将该方法包含在子类中。然后,您只需将子类用于您想要该功能的视图控制器。

或者,您可以有一个 BOOL 属性来确定表视图是否应该响应选择,并在推送视图控制器之前设置该属性(如果您使用的是故事板,请在 prepareForSegue:sender: 中设置它)。

【讨论】:

以上是关于调用相同的视图控制器但需要不同的操作的主要内容,如果未能解决你的问题,请参考以下文章

重新加载相同的视图控制器,但信息不同

Rails - 相同的模型/控制器,但不同的视图

我将如何使用相同的视图控制器,但通过它传递不同的信息?

具有多个行为模型的 ViewController

相同的路由但在 Laravel 5.1 路由中调用不同的控制器

从不同的控制器输出到相同的视图