我正在创建一个科学计算器应用程序,我已经完成了所有按钮和数学运算。 我要做的是添加第二个视图,显示计算器已执行的所有操作。最好的方法(我能想到)是存储所有按钮并在这个二级视图中显示它们。但我不知道如何在视图之间传递按钮。
我已经完成了将数据从数据字段传递到标签的教程,这与它应该如何工作类似,但是当按下更多按钮时,结果不需要替换,因为数据字段与NSString方法一样。
非常感谢任何帮助。如果不清楚,请告诉我。
答案 0 :(得分:1)
您不一定需要两个视图控制器。您可以将主视图用作容器(称为containerView)。在其中放置另外两个UIViews,每个都占据整个视图。确保一个不在另一个内。它们应该位于containerView内的对等级别。一个是你当前的观点(称之为calculatorView)。另一个是动作的视图(称之为actionsView)。向两个视图中的每个视图添加一个按钮,并使用关联的IBAction在视图之间进行切换。您的程序将始终保留在同一视图控制器中;没有必要在控制器之间传递。你这样过渡:
[UIView animateWithDuration:1.0 delay:nil options:UIViewAnimationOptionTransitionFlipFromRight animations:^{
[calculatorView setHidden:YES];
[actionsView setHidden:NO];
} completion:nil];
和
[UIView animateWithDuration:1.0 delay:nil options:UIViewAnimationOptionTransitionFlipFromRight animations:^{
[calculatorView setHidden:NO];
[actionsView setHidden:YES];
} completion:nil];
虽然您可以使用两个视图控制器,这是一个很好的设计模式,但这是一个简单的解决方案,可以避免计算器应用程序的复杂性。
答案 1 :(得分:0)
你可以有一个名为historyArray的数组,你可以在按下按钮时存储数值或运算符。如果这将是您的应用程序的一个关键功能,请创建一个名为OperationHistory的模型类,允许在按下按钮的同时传递值,并根据您想要的历史记录数量进行查询。查询的例子是-allHistory和-historySinceLastClear。
示例:
@interface OperationHistory : NSObject
{
@private:
NSMutableArray *history;
}
- (void)addNumberToHistory:(NSNumber *)number;
- (void)addOperatorToHistory:(NSString *)operator;
- (void)addClearCommandToHistory; // serves as a marker only; doesn't clear history
- (NSArray *)allHistory;
- (NSArray *)historySinceLastClear;
- (void)clearHistory;
此外,关于您的原始标题,您的xib文件不应该(也不能)关注数据存储。 xib文件是接口,在您的情况下,应该为您的数据模型提供视图。