【问题标题】:How can I store button presses into a different .xib and view them?如何将按钮按下存储到不同的 .xib 中并查看它们?
【发布时间】:2012-02-16 13:38:24
【问题描述】:

我正在创建一个科学计算器应用程序,我已经让所有的按钮都能正常工作并进行数学运算。 我要做的是添加第二个视图,该视图将显示计算器已执行的所有操作。最好的方法(我能想到的)是存储所有的按钮按下并将它们显示在这个辅助视图中。但我不知道如何在视图之间传递按钮按下。

我已经完成了关于将数据从数据字段传递到标签的教程,这与它的工作原理类似,但是当按下更多按钮时不需要替换结果,就像使用数据字段到 NSString 方法一样。

非常感谢任何帮助。如果有不清楚的地方,请告诉我。

【问题讨论】:

  • 可能会使用一个有一个或两个数组来存储您的信息的小对象,也许将其实现为单例,然后像使用任何其他对象一样使用它
  • 您需要设置一个委托协议。在这里查看我的答案:[两个视图控制器之间的数据传输][1]。 [1]:stackoverflow.com/questions/8740205/…

标签: iphone xcode button xcode4.2


【解决方案1】:

您不一定需要两个视图控制器。您可以将主视图用作容器(称为 containerView)。将另外两个 UIViews 放在其中,每个 UIViews 占据整个视图。确保一个不在另一个内部。它们应该在 containerView 内处于同等级别。一个是您当前的视图(称为calculatorView)。另一个是操作视图(称为操作视图)。使用关联的 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];

虽然您可以使用两个视图控制器,这是一个很好的学习设计模式,但这是一个简单的解决方案,可以避免计算器应用程序的复杂性。

【讨论】:

    【解决方案2】:

    您可以有一个名为 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 文件是接口,在您的情况下,应该为您的数据模型提供视图。

    【讨论】:

      猜你喜欢
      • 2017-09-19
      • 2017-10-13
      • 2021-05-14
      • 2015-08-14
      • 1970-01-01
      • 1970-01-01
      • 2018-06-03
      • 2016-09-05
      • 1970-01-01
      相关资源
      最近更新 更多