Как мне установить свойство объекта из другого файла в какао? - PullRequest
1 голос
/ 21 октября 2011

Я кодирую приложение для iPhone.

Вместо того, чтобы писать весь код здесь, в основном это то, что я хочу сделать:

testViewController.m:

- (void)viewDidLoad { label.text=@"text"; } 

Это работает.
Теперь я хочу изменить текст метки из файла testAppDelegate.

- (void)applicationDidBecomeActive:(UIApplication *)application { 
testViewController *tvc=[[testViewController alloc] init];
tvc.label.text=@"another text";
[tvc release];
 }  

Это не работает!
Как я могу это сделать?

Спасибо за все ответы:)

Ответы [ 4 ]

3 голосов
/ 21 октября 2011

В applicationDidBecomeActive вы создаете новый экземпляр контроллера представления (именно это alloc / init), устанавливая текст метки в вашем новом экземпляре , а затем освобождаете его.

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

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

0 голосов
/ 22 октября 2011

Простите!Должен был указать больше, что я делал.Теперь я узнал.У меня был шаблон контроллера представления панели вкладок.

Я решил это, добавив в файл делегата .h:

@class testViewController
@property(nonatomic,retain) UIViewController *testViewcontroller;

и в файле .m:

@synthesize testViewController=_tvc;
- (void)applicationDidBecomeActive:(UIApplication *)application
 {
_tvc.label.text=@"another text";
}

И, конечно, импортировал testViewController.h и объявил там тоже методы.

Спасибо за все ваши ответы:)

0 голосов
/ 21 октября 2011

Объявите testViewController как выход в testAppDelegate.h, выполните его привязку в xib, возможно MainMenu.xib, теперь попробуйте изменить значение его метки в -

- (void)applicationDidBecomeActive:(UIApplication *)application 
0 голосов
/ 21 октября 2011

В файле .h: определить свойство:

@property (nonatomic, retain) UILabel *label;

В файле .m: реализовать методы set / get для этого свойства (например, автоматически):

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