通过类调用方法

问题描述:

我在我的应用程序中有两个视图。在第一个视图中,我有一个表格视图,它显示从互联网上下载的数据。该FirstViewController有一个方法来获取数据,并更新视图:通过类调用方法

- (void)viewDidLoad 
{ 
    // Create PlanGenerator 
    _planGenerator = [[PlanGenerator alloc] init] 

    [self loadPlan]; 

- (void)loadPlan 
{ 
    _plan = [_planGenerator getData] 

    // Updating the view 

    // Updating the table view 
    [self.tableView reloadData] 
} 

从互联网上我有一类叫做PlanGenerator下载数据。这个类有一个名为getData的实例方法,它返回一个NSArray。表格视图使用实例变量_plan(数组)在表格视图中显示数据。

在第二个视图(由SecondViewController控制)中,您可以对要下载的内容进行一些调整。告诉这些变化PlanGenerator我使用了class properties的概念。现在,当我在第二个视图中更改某些内容(实际上它只是一个参数)时,我想调用FirstViewController中的方法loadPlan

我的第一个想法是创建一个类方法,但是我必须为该方法使用的每个变量创建“类属性”。

有没有更简单的方法来做到这一点?

+0

一些事情....当你说“第二视图”时,你是否真的指第二视图控制器? (这里有一个很大的**差异。)你知道'alloc/init'创建一个** new **对象,它不会将你在其他一些'PlanGenerator'中给出的信息码? – 2014-09-20 14:07:26

+0

是的,我知道这是一个很大的差异,但我认为很明显,任何View都有一个ViewController。无论如何,我在我的问题中补充说。但是我不太明白你的问题的第二部分是什么意思。我知道'PlanGenerator'的每个新对象都是不同的,但'getData'返回的数据对于每个实例都是相同的。 – Codey 2014-09-20 15:36:11

+0

有些人在单个控制器中有多个视图,并根据需要隐藏/显示它们。 (*耸肩*)我看到你改变了你的问题,所以'PlanGenerator'不是一个局部变量。这有助于我评论的第二部分;我正在谈论你如何在方法结束时将超出范围的东西调用'loadPlan'。 – 2014-09-20 15:41:48

您缺少一些基础知识。

尝试使用此设计,假设FirstVC用于显示数据并具有tableview。 SecondVC(您的PlanGenerator)用于获取/下载数据。

在SecondVC:

  1. 创建任何财产(参数等称标准),该FirstVC将提供决定如何下载。

  2. 创建一个公共方法getData。

在FirstVC:

  1. 创建伊娃(说_myPlanGeneartor)和分配它。

现在来自FirstVC的实例,您可以访问SecondVC(_myPlanGenerator)的实例。由此你可以提供标准参数和请求数据(getData)。

+0

哦,我很抱歉,我想我没有表达得很好。我有2个ViewControllers(在MVC模式中的控制器),我有PlanGenerator类(在MVC模式中的模型)。那实际上是我的结构。 – Codey 2014-09-20 15:28:34

+0

你有另一个想法吗? – Codey 2014-09-22 20:38:20