【问题标题】:How to add amount into UITextField on click of UIButton如何在单击 UIButton 时将金额添加到 UITextField
【发布时间】:2015-07-01 11:55:17
【问题描述】:

我有一个UITextField 和下面那个 3 按钮。用户可以在UITextField中输入金额。并且当用户单击下面的按钮UITextField 时,它将在UITextField 中添加金额,并在按钮中写入金额。

第一个按钮会加 100,第二个按钮会加 500,第三个会加 1000。实现它的最佳方法是什么。

我尝试实现以下但得到 button.tag=0

/*Amount increment*/
- (IBAction)Btn_Incr100:(id)sender {
    [self addTextFieldValue:nil];
}

- (IBAction)Btn_Incr500:(id)sender {
    [self addTextFieldValue:nil];
}

- (IBAction)Btn_Incr1000:(id)sender {
    [self addTextFieldValue:nil];
}



-(void)tagNumber{

    Btn_Incr100.tag=1;
    Btn_Incr500.tag=2;
    Btn_Incr1000.tag=3;


}

-(void) addTextFieldValue:(UIButton*) button
{
    int amount=[Txt_Amount.text intValue];
    int AddAmount;
    NSLog(@"button.tag%d",button.tag);


    if (button.tag==1) {
        AddAmount=100;

    }
    else if (button.tag==2) {
        AddAmount=500;

    }
    else if(button.tag==3) {
        AddAmount=1000;

    }else{
        AddAmount=0;

    }

    amount=amount+AddAmount;

    Txt_Amount.text=[NSString stringWithFormat:@"%d",amount];

    NSLog(@"%d",amount);
    NSLog(@"%@",Txt_Amount.text);



}

【问题讨论】:

  • 请试试我的代码,它会解决你的问题,而且很容易理解。

标签: ios objective-c uibutton uitextfield logical-operators


【解决方案1】:

通过实现标签尝试使用它

- (void)viewDidLoad {
    [super viewDidLoad];
    [self tagNumber];
}


-(void)tagNumber{

    Btn_Incr100.tag=1;
    Btn_Incr500.tag=2;
    Btn_Incr1000.tag=3;


}

-(void) addTextFieldValue:(UIButton*) button
{
    int amount=[Txt_Amount.text intValue];
    int AddAmount;

    int buttonTagIndex = button.tag;
    switch (buttonTagIndex) {
        case 1:
            AddAmount=100;

            break;
        case 2:
            AddAmount=500;

            break;
        case 3:
            AddAmount=1000;
            break;
        default:
             AddAmount=0;
            break;
    }

    amount=amount+AddAmount;
    Txt_Amount.text=[NSString stringWithFormat:@"%d",amount];



}

- (IBAction)btnAmountClick:(id)sender{
    UIButton *button = sender;
    [self addTextFieldValue:button];


}

【讨论】:

    【解决方案2】:

    借助这个你可以实现:

    -(void)displayvalue:(id)sender {       
        UIButton *resultButton = (UIButton *)sender;
        NSLog(@" The button's title is %@." resultButton.currentTitle);
    }
    

    现在您可以在文本字段中设置此文本。

    【讨论】:

    • 第二个选项:借助标签检查,UIButton *button = sender; int buttonTagIndex = button.tag;
    • 我正在尝试使用标签来实现,你能解释一下如何做到这一点
    • 为按钮添加三个不同的标签,例如 100,200,300。 -(void)displayvalue:(id)sender { UIButton *button = sender; int buttonTagIndex = button.tag; switch (buttonTagIndex) { case 100: 将文本填充到文本字段中断;案例 200:将文本填充到文本字段中断;案例 300:将文本填充到文本字段中断;默认值:中断; } }
    • 感谢您的帮助我知道了
    【解决方案3】:

    将此方法添加为每个按钮操作。

    -(void) addTextFieldValue:(UIButton*) button
    {
            NSString *string;
    
            if ([button.text hasPrefix:@"+"] && [button.text length] > 1)
            {
                string = [string substringFromIndex:1];
            }
    
            int textFieldValue =[textField.text integerValue] + string.integerValue;
            textField setText:[NSString stringWithFormat:@"%i",textFieldValue];
    }
    

    【讨论】:

    • 你能解释一下怎么做吗
    • 我认为使用标签更好,因为我们可以分离每个按钮,但我无法实现它
    • 不需要使用标签。只需将按钮标题设置为@"+500"、@"+1000"。并将我的方法添加为所有按钮的操作方法,它将负责增加文本字段。将来,即使您更改金额,它也可以毫无问题地工作,因为我的方法是基于从按钮标题中获取递增值。使用标签很麻烦。
    • @user007007 你在写,但我认为使用标签很容易。
    • 如果您使用带有按钮的标签,那么您需要为每个增量编写单独的开关盒。例如,如果您有 5 个这样的按钮,那么您必须使用相同的代码逻辑处理 5 个开关案例。而且使用标签不太灵活。
    【解决方案4】:
      NSString *string;
    
        if ([button.text hasPrefix:@"+"] && [button.text length] > 1)
        {
            string = [string substringFromIndex:1];
        }
    
        int textFieldValue =[textField.text integerValue] + string.integerValue;
        textField setText:[NSString stringWithFormat:@"%i",textFieldValue];
    

    或 连接不同的动作

       -(IBAction) onClick1: (id) sender]
     { 
            NSLog(@"User clicked %@", sender);
            textField.text = [textField.text integerValue] + 100
     }
    

    【讨论】:

    • 你能解释一下怎么做吗
    • 你也可以对问题做同样的事情
    【解决方案5】:
    You can do this way -
    
    The three buttons below your textfield, link them all to a common method say,
    -(IBAction)addBtnClicked:(UIButton *)btn
    
    Given tags to three buttons like for button 100,
    btn1.tag=100..
    then for button 500, 
    btn2.tag = 500..
    then for button 1000, btn2.tag = 1000.
    
    then in 
    -(IBAction)addBtnClicked:(UIButton *)btn
    {
    int value = -1;
      if(btn.tag == 100)
    {
      value =[txtFldText.text intValue] + 100;
    }
    else if(btn.tag == 500)
    {
      value =[txtFldText.text intValue] + 500;
    }
    else if(btn.tag == 1000)
    {
      value =[txtFldText.text intValue] + 1000;
    }
    
    txtFldText.text = [NSString stringWithFormat:@"%d",value];
    
    }
    

    【讨论】:

    • 检查窗口需要添加按钮标签。
    【解决方案6】:

    你可以这样做:

     - (void)viewDidLoad
    {
       [super viewDidLoad];
       // Do any additional setup after loading the view, typically from a nib.
    
       _txtAmount.text=@"0";
    
       _btn100.tag=100;
       _btn500.tag=500;
       _btn1000.tag=1000;
    
    
    }
    
    - (IBAction)btnAmountClick:(id)sender
    {
       UIButton *btn=sender;
    
       if (btn.tag==100)
       {
         [self addAmount:@"100"];
    
       }
       if (btn.tag==500)
       {
         [self addAmount:@"500"];
    
       }
       if (btn.tag==1000)
       {
         [self addAmount:@"1000"];
    
       }
    
    }
    
    
    -(void)addAmount:(NSString*)strAmount
    {
       int amount=[_txtAmount.text intValue]+[strAmount intValue];
       _txtAmount.text=[NSString stringWithFormat:@"%d",amount];
    
    }
    

    【讨论】:

    • 同样的事情被做了多次所以我想在一个函数中做一次。 int amount=[_txtAmount.text intValue];金额=金额+1000; _txtAmount.text=[NSString stringWithFormat:@"%d",amount];
    【解决方案7】:

    首先为每个按钮设置标签,例如 0,1,2。

    然后将所有按钮的 IBOutlet 连接到单个 IBAction 和 如下实施 IBAction。

     - (IBAction)btnClicked:(id)sender
     {
    
       switch ([sender tag]) {
    
         case 0:
        {
            NSString *s=self.txtField.text;
            int add=[s intValue]+ 100;
            self.txtField.text=[NSString stringWithFormat:@"%d",add];
    
            break;
        }
        case 1:
        {
            NSString *s=self.txtField.text;
            int add=[s intValue]+ 200;
            self.txtField.text=[NSString stringWithFormat:@"%d",add];
        }
            break;
    
        case 2:
        {
            NSString *s=self.txtField.text;
            int add=[s intValue]+ 500;
            self.txtField.text=[NSString stringWithFormat:@"%d",add];
        }
            break;
    
        default:
            break;
      }
    
    } 
    

    【讨论】:

    • 我会尝试实现它并检查它是否有效
    • 如何检测是哪个按钮
    • 为每个按钮设置标签。
    • 对于第一个 btn 设置标签 0。对于第二个 btn 设置标签 1。对于第三个 btn 设置标签 2。
    • @rijanmaskey 我已经检查(运行)它。你也可以试试它是否完美。
    【解决方案8】:

    对此有更好的解决方案。 您可以按不同方式使用标签。 只需将您的三个按钮作为操作绑定到此方法并将标签设置为 100/500/1000

    - (void)buttonAction:(id)sender {
        textField.text = [NSString stringWithFormat:@"%li", (long)(textfield.text.intValue + sender.tag)]; 
    }
    

    【讨论】:

      猜你喜欢
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-25
      相关资源
      最近更新 更多