У меня есть UISegmentedController, у меня есть 3 UIViewController, как фотографии, рамки, галерея. Я добавляю эти 3 представления в Superview с помощью addSubView. В представлении фреймов я добавил подпредставление с именем EditView. В EditView я внес некоторые изменения, я хочу обновить эти изменения в представлении фреймов. Но когда я удаляю EditView из представления фреймов, ни один метод не вызывает. Тогда как обновить изменения из subview в superview. Дерево: UISegmentedController -> Frames (Su) -> EditViews (Subview). Может кто-нибудь помочь мне..
Как обновить Superview из его Subview в iPad?
Ответы (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];
}
}
-Юва.М
Вы можете получить доступ к суперпредставлению любого UIView
, используя свойство superview
UIView
.
Приведенное ниже заявление будет в вашем EditView
.
FrameView* mySuperFrameView = (FrameView*)self.superview;
и следующий оператор может вызывать функцию супервизора.
[mySuperFrameView updateMySuperView];
updateMySuperView является частью вашего superview
.
Удаление представления из супервизора освобождает его.
Отправьте свои изменения перед удалением editView из его супервизора. Вы можете перезаписать removeFromSuperview
в своем editView и произвести манипуляции с данными перед вызовом super removeFromSuperview
.
Или ваш контроллер представления может взять данные из editView перед его удалением.