Ранее задаваемый вопрос: Доступ к UILabel в другом классе из Appdelegate - PullRequest
0 голосов
/ 21 декабря 2011

У меня есть метод, который вычитает 2 из int "healthInt".Затем после этого у меня есть NSString под названием "healthString", который будет просто отображать "healthInt".Поэтому в этом методе «take2Damage» я хочу вычесть 2 из «healthInt».затем установите UILabel с именем "healthLabel" в healthString.проблема в том, что healthLabel находится в другом классе.Вот некоторый код.

Appdelegate.m

-(void)take2Damage{
healthInt = healthInt - 2;

}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:        (NSDictionary *)launchOptions
{
healthInt = 100;
healthString = [[NSString alloc]initWithFormat:@"%d", healthInt];

LevelOneViewController.m

IBOutlet UILabel * healthLabel;

Поскольку последний человек не знал, что я имел в виду, я подумал, что уточню.Мне нужен код, который я могу вставить в take2Damage для доступа к UILabel из другого класса.Если это невозможно, я бы хотел, чтобы код получил доступ к переменной healthInt из другого файла.Надеюсь, это сработает, спасибо.

1 Ответ

1 голос
/ 21 декабря 2011

Во-первых, не модифицируйте IBOutlets другого класса.Это очень подвержено ошибкам из-за того, как IBOutlets управляются UIViewController.

Далее, ваша основная проблема заключается в том, что вы не следуете шаблону MVC (Model-View-Controller).Что-то вроде «здоровья» должно храниться в модельном объекте, таком как класс «Player».AppDelegate не получает повреждений.Игрок получает урон.Затем в представлении отображается текущее значение player.health.

. Чтобы получить обзор MVC, см. Документы Основные сведения о какао (обязательно следуйте по ссылкам).MVC - это сердце развития Какао.Убедитесь, что вы понимаете это, прежде чем заходить слишком далеко.

Также полезно: Организация проекта iOS для шаблона проектирования MVC

И несколько хороших примеров кода, демонстрирующих хорошо разработанное приложение MVC: Элементы .

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

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