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)];
}