Objective c 当按下UIButton时调用其他类中的函数

Objective c 当按下UIButton时调用其他类中的函数,objective-c,iphone-sdk-3.0,Objective C,Iphone Sdk 3.0,我正在使用UITabBarController跟踪应用程序的不同视图。在一个视图(测验控制器)中,我让用户从分段控件中选择数字,然后将其答案存储在整数数组中。底部是一个“提交”按钮,点击该按钮时,应调用另一视图中的函数,以使用结果控制器显示结果。我的问题是,当测验控制器调用时,如何处理类方法以允许分析结果并在结果控制器中设置UILabel 我点击提交按钮的代码如下所示: [ResultViewController calculateAndDisplayScores]; // swtich to

我正在使用UITabBarController跟踪应用程序的不同视图。在一个视图(测验控制器)中,我让用户从分段控件中选择数字,然后将其答案存储在整数数组中。底部是一个“提交”按钮,点击该按钮时,应调用另一视图中的函数,以使用结果控制器显示结果。我的问题是,当测验控制器调用时,如何处理类方法以允许分析结果并在结果控制器中设置UILabel

我点击提交按钮的代码如下所示:

[ResultViewController calculateAndDisplayScores];

// swtich to results view
mainDelegate.tabBarController.selectedIndex = 2;

其中ResultViewController是我的结果控制器的名称。当我执行此操作时,ResultViewController会给我一个错误,我认为它表明我无法在类方法中设置UILabel文本属性。

您并不真正需要类方法。您需要某种方法来通知位于选项卡栏控制器中的ResultViewController的特定实例进行自我更新。编译器向您抱怨,因为您在类上调用方法,而不是在特定实例上调用方法

根据您发布的代码,最简单、最丑陋的方法似乎是:

[(ResultViewController*)[mainDelegate.tabBarController.viewControllers objectAtIndex:2] calculateAndDisplayScores];

// switch to results view
mainDelegate.tabBarController.selectedIndex = 2;
但这样做的正确方法可能是在信息所在的位置使用某种模型对象。您的数据输入UI与模型通信以获取当前数据,并推回用户的编辑。然后,模型可以通知任何相关方,如结果视图控制器,新数据可用,并且他们应该相应地更新自己。该通知可以通过委托关系、NSNotificationCenter或您想象的其他方式完成

为了便于论证,假设这确实是一个类方法。Objective-C中的类实际上没有状态,那么类方法如何保存结果或更新UI