Табло с использованием глобальной переменной или синглтона - PullRequest
0 голосов
/ 10 января 2011

Для программы для iPad, которую я пишу, я использую модальное представление как способ доступа пользователя к табло. Счет ведется вручную. В представлении «Табло» у меня есть кнопка для увеличения оценки и кнопка для уменьшения оценки, которая обновляет UILabel для отображения обновленной оценки. Есть третья кнопка, чтобы закрыть табло, и модальное представление отклонено.

Во время игры я получаю доступ к табло и обновляю счет. Затем я закрываю табло и продолжаю игровой процесс. Геймплей состоит из доступа к нескольким представлениям с помощью UINavigationController. Когда я получаю доступ к табло позже в игре, счет сбрасывается до 0.

Как хранить переменную, чтобы при обращении к табло она сохраняла счет, установленный пользователем?

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

Любые предложения, я бы высоко ценил.

1 Ответ

0 голосов
/ 10 января 2011

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

Одной из возможностей, которая может работать для вас (исходя из того, что говорится в вашем описании), будет подкласс UINavigationController и наличие переменной экземпляра для представления табло в подклассе.Похоже, к представлению на табло всегда обращаются из вида, которым управляет контроллер навигации.Какой бы контроллер представления ни вызывал представление табло, он может получить объект контроллера навигации и использовать его объект табло (который будет иметь текущий счет) в качестве модального представления.

Мне также не ясно, UILabel, чтоОтображение счета является частью представления табло или если оно принадлежит другому представлению.Если он принадлежит другому представлению, также может быть возможно получить счет из UILabel и затем обновить его.

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

Надеюсь, это поможет.

...