Расчет загадки - как я могу влиять на другое текстовое поле? - PullRequest
1 голос
/ 08 марта 2010

В основном у меня проблема в том, что, когда в моем приложении калькулятора используются определенные параметры, результат получается неверным. Проблема заключается в том, что у меня есть отдельные текстовые поля для часов и минут, и, например, я говорю, что у меня в качестве времени начала «13» в одном текстовом поле и «30» в другом с временем окончания «24» и «00» в их соответствующие текстовые поля. Ответ должен быть 10 часов 30 минут, но я получаю ответ 11 часов 30 минут. Код для этого следующий.

 -(IBAction)done:(id)sender {
  int result = [finishHours.text intValue] - [startHours.text intValue];
  totalHours.text = [NSString stringWithFormat:@"%d", result];
  if (result < 0) { 
    totalHours.text = [NSString stringWithFormat:@"%d", result + 24];
  }



    -(IBAction)done2:(id)sender {
  int result = [startMinutes.text intValue] - [finishMinutes.text intValue];
  totalMinutes.text = [NSString stringWithFormat:@"%d", result];
  if (result < 0) {
    totalMinutes.text = [NSString stringWithFormat:@"%d", result + 60];
  }
}

Я хочу сделать так, чтобы при определенных параметрах totalHours.text уменьшался на 1 час, чтобы отразить общее количество минут. Как бы я провел этот расчет в коде?

Спасибо!

1 Ответ

2 голосов
/ 08 марта 2010

Сначала необходимо преобразовать время начала и окончания в единицу (минуты), вычесть минуты, а затем преобразовать обратно в часы: минуты.

Например, calc startTotalMinutes в качестве startHours * 60 + startMinutes. Сделайте то же самое со временем финиша. Вычтите startTotalMinutes из finishTotalMinutes. Компенсировать результат ниже нуля (я думаю, просто добавить 1440). Затем преобразуйте этот результат обратно в часы: минуты. Для часов сделайте результат 60, а остаток - результат минут.

Редактировать: Ниже приведен пример кода по запросу. Также обратите внимание на исправление: часы делятся на 60, а минуты - результат 60.

- (int)hoursMinutesTextToMinutes:(NSString *)hoursText minutesText:(NSString *)minutesText
{
    return [hoursText intValue] * 60 + [minutesText intValue];
}

-(IBAction)done:(id)sender
{
    int startTotalMinutes = [self hoursMinutesTextToMinutes:startHours.text minutesText:startMinutes.text];
    int finishTotalMinutes = [self hoursMinutesTextToMinutes:finishHours.text minutesText:finishMinutes.text];

    int difference = finishTotalMinutes - startTotalMinutes;
    if (difference < 0)
    {
        difference += 1440;
    }

    int diffHours = difference / 60;
    int diffMinutes = difference % 60;

    totalHours.text = [NSString stringWithFormat:@"%d", diffHours];
    totalMinutes.text = [NSString stringWithFormat:@"%d", diffMinutes];
}

hoursMinutesTextToMinutes - это вспомогательный метод, который возвращает текст часы: минуты в виде целых минут. Это позволяет избежать дублирования этого кода.

Требуется только одно действие кнопки (я использовал «готово»).

Обратите внимание, что проверка введенного текста не производится. Вам следует добавить проверку или использовать UIDatePicker, чтобы пользователь мог указать время начала / окончания.

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