我有一个UISegmentedController我有3个UIViewControllers像照片,帧,画廊。 我使用'addSubView'在Superview中添加这3个视图。在框架视图中,我添加了一个名为EditView的子视图。在EditView中我做了一些更改,我想在帧视图中更新这些更改。但是当从帧视图中删除EditView时,任何单个方法都不会调用。然后,如何在superview中更新子视图中的更改。树:UISegmentedController - >帧(Su) - > EditViews(子视图)。任何人都可以帮助我..
答案 0 :(得分:5)
我发现代码可以在子视图中更新superview中的内容。请在您的子视图中使用此代码。它会调用你的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];
}
}
-Yuva.M
答案 1 :(得分:2)
您可以使用UIView
的{{1}}属性访问任何superview
的超级视图。
以下声明将在您的UIView
。
EditView
,下一个语句可以调用超级视图函数。
FrameView* mySuperFrameView = (FrameView*)self.superview;
updateMySuperView 是您[mySuperFrameView updateMySuperView];
的一部分。
答案 2 :(得分:0)
从超级视图中删除视图会将其释放。
在从超级视图中删除editView之前提交您的更改。您可以在editView中覆盖removeFromSuperview
,并在调用super removeFromSuperview
之前进行数据操作。
或者您的视图控制器可以在删除之前从editView获取数据。