2010-07-07 2 views
0

В моем приложении определенный ViewController накладывается (как навигационные кнопки) на галереюViewController, которая может быть переключена.Доступ к предыдущему выделенному viewController и его методам

Однако проблема заключается в том, что после того, как я выделил новый galleryViewController, затем переключитесь на это представление, я хочу иметь возможность отправлять обратно информацию о том, что отображается на исходном ViewController.

Итак, в этой галерееViewController я выделяю объект viewController и пытаюсь выполнить все, что нужно сделать.

Однако я понял, что этот объект viewController является НОВЫМ выделенным объектом. Таким образом, различные UIButtons, которые я хочу сделать скрытыми и скрытыми, НЕ являются теми, которые в настоящее время присутствуют в супервизии - они даже не были выделены.

Как получить доступ к исходному viewController - это тот, который объявлен и добавленToTheSubview в appDelegate.

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

Я отправил этот же вопрос на iphonedevsdk, так что, если я получу любую информацию, я с радостью обновлю ход этого вопроса.

ответ

0

Если я понимаю, о чем вы спрашиваете, я бы предложил вам объявить представления как IBOutlets в ViewController. Затем, используя IB, привязанные представления, которые вы хотите манипулировать этими IBOutlets, и используйте эти объекты во всем коде.

Надежда, что помогает ...

BB

+0

Лично я держусь подальше от IB. И я изменил объявления моих различных UIViewControllers в моем файле parentViewController .h, чтобы включить IBOutlet - однако я до сих пор не понимаю, как получить доступ к этому parentViewController и его методам из childViewController. –

+0

Я, вероятно, не смогу вам помочь, если вы избегаете IB. Я должен признать, что вернусь к тому, чтобы немного рассердиться относительно того, что тебе нужно. Поскольку вы продолжаете ссылаться на эти два представления как родителя и ребенка, я собираюсь предположить, что дочерний элемент является под-представлением родителя. Если это так, вы можете вернуть ссылку родительскому, используя [self superview]. Это помогает? –

+0

Да, я все еще относительно новый (3-4 месяца), и определенно нужно работать над использованием правильной терминологии. Я сделаю это. И я уверен, что да, это то, что я делаю. Я использую insertSubview: для другого viewController - и этот viewController должен иметь возможность настроить таргетинг на родителя, который вставил это подвью. ..Man Я надеюсь, что это имеет смысл. –

0

Так я узнал, мне нужно получить к нему доступ через AppDelegate поэтому у меня есть эта строка кода в моем childViewController:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate]; 
ParentViewController *pvc = appDelegate.viewController; 
[pvc placeOverlays:index]; 
[pvc release]; 

Однако происходит некоторое нечетное поведение. Если я удалю [выпуск pvc], я смогу пройти через все слайды галереи, мои UIButtons будут обрабатываться точно так, как я бы хотел ... но я просто чувствую, что предполагается [версия pvc].

Но с этим я могу пройти только этот код дважды, прежде чем он сработает с EXC_BAD_ACCESS. Я думаю, что это, вероятно, имеет какое-то отношение к моему рудиментарному знанию синтаксиса iOS, но любой, кто хочет объяснить мне, будет очень благодарен!

Для тех, кто следит за ним, удалите [pvc release]; из моего кода выше, и все это работает суперфанатично. Хотя я чувствую, что это может привести к проблеме с памятью.

+0

Куда вы звоните на этот код? Если это в вашем init, вы можете переместить pvc в переменную класса, а затем отпустите его в своем dealloc. –

+0

У меня есть вызов в childViewController. По сути, childViewController необходимо вызвать [место на pvcOverlays: index]; метод для представления, которое первоначально alloc'd и добавил childViewController, чтобы сделать соответствующие визуальные изменения. Я думаю, что, возможно, мой parentViewController может содержать немного слишком много и, возможно, должен отделить его от 2 или даже 3 viewControllers. –

Смежные вопросы