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

Как правило, я бы назвал другой метод класса следующим образом: MyClass * class = [[MyClass alloc] init]; [class myMethod];

Но проблема в том, что он вызовет ViewDidLoad. Это проблема для меня.

Есть ли способ получить доступ к свойству в другом методе или вызвать класс в другом методе без вызова ViewDidLoad?

Спасибо!

Edit1 : Так вы говорите, что если я сделаю это, он не будет вызывать мой VDL?:

MyClassB *classB = [[[MyClassB alloc] init] autorelease];
[classB.pauseButton setHidden:NO];

Также как насчет того, чтобы при вызове метода вызывал ViewDidLoad?

Ответы [ 2 ]

2 голосов
/ 21 ноября 2011

Конечно;refactor myMethod to not call viewDidLoad.

То есть, если вы вызываете метод a, а метод a вызывает b, но вы не хотитевызовите b, тогда вам нужно изменить реализацию a, чтобы иногда не вызывать b.Либо изменив a, либо создав новый метод c в классе, содержащем a, который не вызывает b.

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

Edit1: Так вы говорите, что если я сделаю это, он не будет вызывать мой VDL?:

MyClassB *classB = [[[MyClassB alloc] init] autorelease];

Это создает новый экземпляр MyClassB.Если экземпляр уже отображается на экране, то, скорее всего, вам не нужен новый экземпляр, и да, именно поэтому вызывается viewDidLoad.

Либо создайте переменную экземпляра, которая можетуказать на уже существующий экземпляр classB или иным способом получить этот экземпляр;повесить его на делегат приложения или что-то в этом роде.

В целом, кажется, что вы не понимаете, что означает создание объекта, а не просто ссылаетесь на него и как все это вписывается в модель создания приложения UIKit.Это немного сложно, пока вы не освоитесь.Изучите несколько примеров, показывающих, как использовать контроллеры представлений, поскольку они, вероятно, решили аналогичную проблему.

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

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

eg.
if(self.myClass==nil)
  self.myClass =  [[MyClass alloc] init];

[self.myClass doStuff];
[self.myClass.pauseButton setHidden:NO];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...