Как сохранить нажатия кнопок в другой файл .xib и просмотреть их? - PullRequest
0 голосов
/ 16 февраля 2012

Я создаю приложение для научного калькулятора, у меня есть все кнопки и математика. То, что я пытаюсь сделать, это добавить второе представление, которое будет отображать все действия, которые выполнял калькулятор. Лучший способ (я мог придумать) состоял в том, чтобы сохранить все нажатия кнопок и отобразить их в этом дополнительном представлении. Но я не знаю, как передавать нажатия кнопок между видами.

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

Любая помощь очень ценится. Если что-то неясно, пожалуйста, дайте мне знать.

Ответы [ 2 ]

1 голос
/ 17 февраля 2012

Вам не обязательно нужны два контроллера вида. Вы можете использовать свой основной вид в качестве контейнера (назовите его containerView). Поместите в него два других UIViews, каждый из которых будет занимать весь вид. Убедитесь, что одно не внутри другого. Они должны находиться на одноранговом уровне внутри containerView. Одним из них является ваш текущий взгляд (назовите его calculatorView). Другое представление для действий (назовите это actionsView). Добавьте кнопку к каждому из двух представлений со связанным IBAction для перехода между представлениями. Ваша программа всегда будет оставаться в одном контроллере представления; нет необходимости проходить между контроллерами. Вы переходите так:

[UIView animateWithDuration:1.0 delay:nil options:UIViewAnimationOptionTransitionFlipFromRight animations:^{
    [calculatorView setHidden:YES];
    [actionsView setHidden:NO];
} completion:nil];

и

[UIView animateWithDuration:1.0 delay:nil options:UIViewAnimationOptionTransitionFlipFromRight animations:^{
    [calculatorView setHidden:NO];
    [actionsView setHidden:YES];
} completion:nil];

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

0 голосов
/ 16 февраля 2012

У вас может быть массив под названием historyArray, в котором вы сохраняете числовое значение или оператор при нажатии кнопок. Если это будет ключевой особенностью вашего приложения, создайте класс модели с именем, подобным OperationHistory, который позволяет передавать значения в соответствии с нажатиями кнопок и позволяет выполнять запросы в зависимости от требуемого объема истории. Примерами запросов могут быть -allHistory и -historySinceLastClear.

Пример:

@interface OperationHistory : NSObject
{
    @private:
    NSMutableArray *history;
}
- (void)addNumberToHistory:(NSNumber *)number;
- (void)addOperatorToHistory:(NSString *)operator;
- (void)addClearCommandToHistory; // serves as a marker only; doesn't clear history

- (NSArray *)allHistory;
- (NSArray *)historySinceLastClear;

- (void)clearHistory;

Кроме того, что касается вашего исходного заголовка, ваши xib-файлы не должны (и не могут) быть связаны с хранением данных. XIB-файлы - это интерфейсы, которые в вашем случае должны обеспечивать представление вашей модели данных.

...