Реализация тега отправителя через десятичное число (id) с Xcode - PullRequest
0 голосов
/ 24 июня 2011

У меня простой вопрос iOS / target C. Я искал на форуме и попробовал несколько разных подходов, но я не могу понять это, я очень плохо знаком с кодированием, поэтому я прошу прощения за это может показаться глупым. Я пытаюсь построить простой калькулятор с кнопками, сделанными с нуля, но я застрял в десятичной части. Я использую оператор switch для ввода своих номеров через кнопку (id) отправителя. Вы можете увидеть часть, которую я закомментировал, именно здесь я собирался взять идентификатор, помеченный 10, и написать какое-то утверждение для внедрения десятичного числа в значение с плавающей точкой.

Я также посмотрел предыдущий пост, в котором добавляется десятичное место. Я пытался изменить код, но мне кажется, что мне здесь не хватает нескольких вещей.

-(IBAction)decimalButton:(id)sender{
    calculatorScreen.text = [calculatorScreen.text stringByAppendingFormat:@"."]; 
}

Любая помощь / предложения / пример кода были бы очень полезны, опять же, я извиняюсь за вопрос новичка, я стараюсь изо всех сил, чтобы изучить основы.

#import "calcViewController.h"

@implementation calcViewController



-(IBAction)buttonDigitPressed:(id)sender { //ditits presed with sender tag
//    switch ([sender tag]) {
//        case 1:
//            currentNumber = 1;
//            break;
//        case 2:
//            currentNumber = 2;
//            break;
//        case 3:
//            currentNumber = 3;
//            break;
//        case 4:
//            currentNumber = 4;
//            break;
//        case 5:
//            currentNumber = 5;
//            break;
//        case 6:
//            currentNumber = 6;
//            break;
//        case 7:
//            currentNumber = 7;
//            break;
//        case 8:
//            currentNumber = 8;
//            break;
//        case 9:
//            currentNumber = 9;
//            break;
//        case 10:
//            //possibly implement decimal here 
//            break;
//    }


    currentNumber = (float)[sender tag]; //sets currentNumber to buttonPressed
    calculatorScreen.text = [NSString stringWithFormat:@"%g",currentNumber];//displays button
}


-(IBAction)buttonOperationPressed:(id)sender {
    //currentOperation is 0 by system default?

    if (currentOperation == 0) 
        result = currentNumber;

    else {
        switch (currentOperation) {
            case 1:
                result = result + currentNumber;
                break;
            case 2:
                result = result - currentNumber;
                break;
            case 3:
                result = result * currentNumber;
                break;
            case 4:
                result = result / currentNumber;
                break;
            case 5:
                currentOperation = 0;
                break;
        }
    }
    //currentNumber = 0;

    currentNumber = result; //current number equals last resulting equation
    calculatorScreen.text = [NSString stringWithFormat:@"%g",result]; //screen prints result
    if ([sender tag] == 0) result = 0;
    currentOperation = [sender tag];
}

1 Ответ

0 голосов
/ 24 июня 2011

Приведенный ниже код должен корректно обновлять экран.

-(IBAction)buttonDigitPressed:(id)sender { //ditits presed with sender tag
    switch ([sender tag]) {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
        case 6:
        case 7:
        case 8:
        case 9:
            calculatorScreen.text = [calculatorScreen.text stringByAppendingFormat:@"%d", [sender tag]];
            break;

        case 10:
            NSRange range = [calculatorScreen.text rangeOfString:@"."];
            if ( range.location == NSNotFound ) {
                calculatorScreen.text = [calculatorScreen.text stringByAppendingString:@"."];
            }
            break;
    }
}

Чтобы использовать это в расчетах, используйте

float screenNumber = [calculatorScreen.text floatValue];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...