通过类调用方法
问题描述:
我在我的应用程序中有两个视图。在第一个视图中,我有一个表格视图,它显示从互联网上下载的数据。该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
。
我的第一个想法是创建一个类方法,但是我必须为该方法使用的每个变量创建“类属性”。
有没有更简单的方法来做到这一点?
答
您缺少一些基础知识。
尝试使用此设计,假设FirstVC用于显示数据并具有tableview。 SecondVC(您的PlanGenerator)用于获取/下载数据。
在SecondVC:
创建任何财产(参数等称标准),该FirstVC将提供决定如何下载。
创建一个公共方法getData。
在FirstVC:
- 创建伊娃(说_myPlanGeneartor)和分配它。
现在来自FirstVC的实例,您可以访问SecondVC(_myPlanGenerator)的实例。由此你可以提供标准参数和请求数据(getData)。
一些事情....当你说“第二视图”时,你是否真的指第二视图控制器? (这里有一个很大的**差异。)你知道'alloc/init'创建一个** new **对象,它不会将你在其他一些'PlanGenerator'中给出的信息码? – 2014-09-20 14:07:26
是的,我知道这是一个很大的差异,但我认为很明显,任何View都有一个ViewController。无论如何,我在我的问题中补充说。但是我不太明白你的问题的第二部分是什么意思。我知道'PlanGenerator'的每个新对象都是不同的,但'getData'返回的数据对于每个实例都是相同的。 – Codey 2014-09-20 15:36:11
有些人在单个控制器中有多个视图,并根据需要隐藏/显示它们。 (*耸肩*)我看到你改变了你的问题,所以'PlanGenerator'不是一个局部变量。这有助于我评论的第二部分;我正在谈论你如何在方法结束时将超出范围的东西调用'loadPlan'。 – 2014-09-20 15:41:48