【问题标题】:Display concatenated string in a text box在文本框中显示连接的字符串
【发布时间】:2014-02-27 02:06:21
【问题描述】:

我正在尝试构建一个按钮计算器。因此,用户按下标记为“0”的按钮,文本框显示 0。我遇到的挑战是用户何时按下 0 按钮两次(“00”)或按下 1,然后按下 0。(“10 .")

我为每个数字按钮设置了一个事件。我的想法是有一个名为 runningAnswer 的通用变量来存储连接答案的运行记录。然后我有一个按钮字符串和一个“持有人”字符串,因为我不能将 runningAnswer 字符串附加到按钮字符串。

我遇到的问题是我必须启动持有者字符串。我可以用我的方法让文本框显示“0”,但每次按下它时,runningAnswer 只存储第一个“0”,因为持有者字符串正在重新设置自身。

如果这是一个非常简单的问题,我深表歉意。我只是对如何构建这种应用程序感到非常迷茫。

- (IBAction)btn0:(id)sender {
    NSString* zero =@"0";
    NSString* holder= @"";
    runningAnswer=[holder stringByAppendingString:zero];
    self.txtResult.text = runningAnswer;

【问题讨论】:

    标签: objective-c nsstring concatenation


    【解决方案1】:

    您需要在函数之外声明 holder 字符串

    NSString *holder = @""; 
    

    在你的函数内部

    holder = [holder stringByAppendingString:zero];
    self.txtResult.text = holder;
    

    【讨论】:

    • 我也是这么想的,但是在方法之外声明它会在我进入它时导致一个 nil 值。我不明白为什么会这样......
    • @MichelleFarley 当我说在方法之外时,我的意思是:在你的类中声明变量,并在其他地方初始化它(例如,init 方法)
    【解决方案2】:

    摆脱持有人,然后去做

    runningAnswer = [runningAnswer stringByAppendingString:zero];
    

    并确保在 init 中初始化运行的答案,例如:

    - (id)init
    {
      self = [super init];
      if (self) {
        runningAnswer = @"";
      }
      return self;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-10
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多