modalViewController: свойства и переменные - PullRequest
1 голос
/ 23 марта 2012

Мне действительно нужна помощь с моим приложением для iPad.Следующий сценарий:

  • mainView загружает
  • mainView устанавливает некоторые переменные
  • mainView представляет modalView
  • modalView добавляет объекты в mutableArray mainView
  • modalView закрывает и вызывает метод mainView

Теперь мой вопрос: как мне получить доступ к переменным и методам, не создавая новые экземпляры для каждого?!

Когда я делаю mainView *main = [[mainView alloc] init];в modalView для доступа к методам и переменным старый экземпляр уничтожается, и я теряю все свои переменные при возврате обратно в mainView.

Спасибо за каждую небольшую помощь!С уважением, Юлиан

1 Ответ

0 голосов
/ 22 мая 2012

Один из способов сделать это - добавить свойство к вашему modalView, что-то вроде parent. Затем, непосредственно перед вызовом presentModalViewController со своего mainView, вы должны установить modalView.parent = self; Таким образом, у вас есть обратная ссылка на mainView (конкретный экземпляр) из вашего modalView.

Другой способ - сделать ваш mainView одноэлементным объектом. Это может или не может быть оптимальным для вас, в зависимости от дизайна вашего приложения. Я сделал одноэлементные объекты следующим образом:
+ Создайте глобальную / статическую переменную в вашем mainView (например, mv_). Тип должен совпадать с классом (т. Е. mainView). Инициализируйте его как nil.
+ Создать метод класса для выделения и инициализации этой переменной (если экземпляр еще не существует) или для возврата его как есть (если вы уже инициализировали его). Это может быть так просто, как:

+ (mainView *) getMainView()
{
    if (!mv_)
        _mv = [[self alloc] init];
    return mv_;
}  

+ Затем, когда вам нужно получить доступ к одноэлементному объекту mainView, вы просто вызываете getMainView. Однако при использовании этой методологии есть некоторые особенности, поэтому убедитесь, что ваше приложение ведет себя так, как вы хотите, если вы решите пойти по этому пути.

...