Как обновить Superview из его Subview в iPad?

У меня есть UISegmentedController, у меня есть 3 UIViewController, как фотографии, рамки, галерея. Я добавляю эти 3 представления в Superview с помощью addSubView. В представлении фреймов я добавил подпредставление с именем EditView. В EditView я внес некоторые изменения, я хочу обновить эти изменения в представлении фреймов. Но когда я удаляю EditView из представления фреймов, ни один метод не вызывает. Тогда как обновить изменения из subview в superview. Дерево: UISegmentedController -> Frames (Su) -> EditViews (Subview). Может кто-нибудь помочь мне..


person Yuvaraj.M    schedule 10.06.2011    source источник


Ответы (3)


Я нашел код для обновления чего-то в супервизоре из подпредставления. Пожалуйста, используйте этот код в своем подвиде. Он вызовет ваш метод superview viewWillAppear. Вы можете использовать другой метод вместо viewWillAppear. Меня устраивает.

for (UIView* next = [self.view superview]; next; next = next.superview) 
    {
        UIResponder* nextResponder = [next nextResponder];
        if ([nextResponder isKindOfClass:[UIViewController class]])
        {
            [(UIViewController*)nextResponder viewWillAppear:YES];
        }
    }

-Юва.М

person Yuvaraj.M    schedule 14.06.2011

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

Приведенное ниже заявление будет в вашем EditView.

FrameView* mySuperFrameView = (FrameView*)self.superview;

и следующий оператор может вызывать функцию супервизора.

[mySuperFrameView updateMySuperView];

updateMySuperView является частью вашего superview.

person Jhaliya - Praveen Sharma    schedule 10.06.2011
comment
@Jhaliya, спасибо за ваше место. Я использую ваш код в своем приложении. - person Yuvaraj.M; 10.06.2011
comment
Привет, друг, я реализовал твой код. Я вызвал FrameView mySuperFrameView = (FrameView) self.superview; в EditView, но в этой строке есть одна ошибка: «Запрос на элемент« superview »не является структурой или объединением». опция self.superview доступна. Еще идеи. пожалуйста, спаси мой день .. - person Yuvaraj.M; 10.06.2011
comment
просто измените FrameView * mySuperFrameView = (FrameView *) self.view.superview; - person iAmitWagh; 10.06.2011
comment
Я нашел один ответ на свой вопрос, у меня он работает. Спасибо за вас, друзья. - person Yuvaraj.M; 10.06.2011
comment
@ Yuvaraj.M: Хорошо, предлагаю тебе поделиться этим с другими. - person Jhaliya - Praveen Sharma; 10.06.2011
comment
@Jhaliya, теперь я не могу загрузить код. Я попытался найти этот код, но stackoverflow не позволяет мне опубликовать код. Я отправлю этот ответ через 4 часа. Это тот код для (UIView * next = [self.view superview]; next; next = next.superview) {UIResponder * nextResponder = [next nextResponder]; if ([nextResponder isKindOfClass: [класс UIViewController]]) {// [(UIViewController *) nextResponder viewWillAppear: YES]; [(UIViewController *) nextResponder viewDidAppear: ДА]; }} Реализуйте этот код в своем подвиде. Он вызовет метод своего супервизора. - person Yuvaraj.M; 10.06.2011

Удаление представления из супервизора освобождает его.

Отправьте свои изменения перед удалением editView из его супервизора. Вы можете перезаписать removeFromSuperview в своем editView и произвести манипуляции с данными перед вызовом super removeFromSuperview.

Или ваш контроллер представления может взять данные из editView перед его удалением.

person fzwo    schedule 10.06.2011