Ios 如何在单击UIExtField按钮时将金额添加到UIExtField中

Ios 如何在单击UIExtField按钮时将金额添加到UIExtField中,ios,objective-c,uibutton,uitextfield,logical-operators,Ios,Objective C,Uibutton,Uitextfield,Logical Operators,我有一个UITextField和下面的3个按钮。用户可以在UITextField中输入金额。当用户单击UITextField下面的按钮时,它将在UITextField中添加金额,并在按钮中写入金额 第一个按钮将添加100,第二个按钮将添加500,第三个按钮将添加1000。实现这一目标的最佳方法是什么 我尝试实现以下功能,但得到了button.tag=0 /*Amount increment*/ - (IBAction)Btn_Incr100:(id)sender { [self add

我有一个
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);



}

借助于此,您可以实现:

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

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

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

-(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];
}
或 连接单独的操作

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

您可以这样做:

 - (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];

}

首先为每个按钮设置标记,如0,1,2

然后将所有按钮的IB插座连接至单个IBAction,并 执行iAction,如下所示

 - (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;
  }

} 

尝试通过实现标记来使用它

- (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];


}

有一个更好的解决方案。 您可以使用不同的标记smth,因为它们是。 只需将三个按钮作为操作绑定到此方法,并将标记设置为100/500/1000

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


第二个选项:在标签的帮助下进行检查,UIButton*button=sender;int buttonTagIndex=button.tag;我试图实现使用标签你能解释我如何做添加三个不同的标签按钮,如100200300-(void)displayvalue:(id)发送方{UIButton*button=sender;int buttonTagIndex=button.tag;开关(buttonTagIndex){案例100:将文本填充到文本字段分隔符;案例200:将文本填充到文本字段分隔符;案例300:将文本填充到文本字段分隔符;默认值:分隔符;}谢谢你的帮助,我得到了它。你能解释我怎么做吗?你能为问题做同样的事情吗?你能解释我怎么做吗?我认为使用标签更好,因为我们可以分开每个按钮,但我无法实现它。无需使用标签。只需将按钮标题设置为@“+500”@“+1000”。并将我的方法添加为“所有按钮”的操作方法,它将负责递增文本字段。将来,如果您甚至更改金额,它将毫无问题地工作,因为我的方法是基于从按钮标题获取递增值。使用标记很麻烦。@user007007您正在编写,但我认为使用标记很容易。如果您使用用按钮标记然后你为每个增量编写单独的切换案例。例如,如果你有5个这样的按钮,那么你必须用相同的代码逻辑处理5个切换案例。使用标记灵活性较差。请尝试我的代码,它将解决你的问题,并且非常容易理解。同样的事情会多次完成,因此我要在函数中执行一次。int amount=[\u txtmount.text intValue];amount=amount+1000;\u txtmount.text=[NSString stringWithFormat:@“%d”,amount];您需要在检查窗口中添加按钮标签。我将尝试实现它,并检查它是否有效。如何检测每个按钮的设置标签是哪个按钮。对于第一个btn设置标签0。对于第二个btn设置标签1。对于第三个btn设置标签2。@rijanmaskey我已检查(运行)它。您也可以尝试完美地工作。
- (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];


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