【发布时间】:2011-01-15 04:16:54
【问题描述】:
我是一名刚接触 Objective-c 的 C++ 程序员。
我创建了一个计算器应用程序,它使用单个视图运行良好。我有一个计算类和一个 ViewController。每次按下按钮时,ViewController 中的 IBAction 方法都会调用 Calculations 类中定义的方法来处理输入并将输出作为 NSString 返回,然后我将其设置为 label.text 字段的值。
现在我正在使用相同的 Calculations 类开发一个标签栏应用程序。这个应用程序有两个选项卡,每个选项卡都有一组独特的计算器输入按钮(两个视图共享相同的输入/输出数据)。第一个选项卡与我的第一个具有单一视图的应用程序相同,因此我尝试以类似的方式执行此操作。
问题来了:
当按下按钮时,处理输入的 IBAction 方法将通过调用 Calculations 类方法(如下所示)运行而不会出错:
-(IBAction)readInput:(id)sender {
[_calculations input:[sender titleForState:UIControlStateNormal]];
inputField.text = [_calculations inputDisplay];
outputField.text = [_calculations outputDisplay];
}
然而,inputDisplay 和 outputDisplay 方法都返回 nil。使用调试器时,我注意到我无法“进入”对 _calculations 方法的调用,而是跳过该行并且两者返回的值都是 nil。我添加了以下方法:
-(IBAction)setNumber:(id)sender {
NSString *button =(NSString *)[sender titleForState:UIControlStateNormal];
inputField.text = button;
}
如果我将它附加到输入按钮上,我可以看到显示已更新。这似乎是调用 _calculations 成员函数和选项卡栏视图的问题(因为使用单个视图不存在此问题)。
我意识到我遗漏了很多信息,但我这样做是为了避免提供不相关的信息。如果被问到,我会提供所有必要的细节。
【问题讨论】:
-
请注意,您可以 format lines as code 将它们缩进四个空格。编辑器工具栏中的“{}”按钮会为您执行此操作。编辑您的问题并尝试一下。单击编辑器工具栏中的橙色问号以获取有关格式设置的更多信息和提示。
-
示例代码确实是incomplete。
_calculations是怎么设置的?是零吗?inputDisplay和outputDisplay方法是什么?如果它们是Calculation的属性,它们是如何设置的? IB中的绑定是什么?
标签: iphone objective-c uitabbarcontroller