如何从iPad的子视图更新Superview?

时间:2011-06-10 05:29:32

标签: iphone objective-c ipad subview superview

我有一个UISegmentedController我有3个UIViewControllers像照片,帧,画廊。 我使用'addSubView'在Superview中添加这3个视图。在框架视图中,我添加了一个名为EditView的子视图。在EditView中我做了一些更改,我想在帧视图中更新这些更改。但是当从帧视图中删除EditView时,任何单个方法都不会调用。然后,如何在superview中更新子视图中的更改。树:UISegmentedController - >帧(Su) - > EditViews(子视图)。任何人都可以帮助我..

3 个答案:

答案 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获取数据。