关于iPhone:如何从iPad的Subview更新Superview?

How to update Superview from its Subview in iPad?

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


我找到了从子视图中更新超级视图中某些内容的代码。 请在您的子视图中使用此代码。 它将调用您的超级视图viewWillAppear方法。 您可以使用其他方法代替viewWillAppear。 这个对我有用。

1
2
3
4
5
6
7
8
for (UIView* next = [self.view superview]; next; next = next.superview)
    {
        UIResponder* nextResponder = [next nextResponder];
        if ([nextResponder isKindOfClass:[UIViewController class]])
        {
            [(UIViewController*)nextResponder viewWillAppear:YES];
        }
    }

-尤瓦


您可以使用UIViewsuperview属性访问任何UIView的超级视图。

以下语句将在您的EditView中。

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

下一条语句可能是调用超级视图函数。

1
[mySuperFrameView updateMySuperView];

updateMySuperView是superview的一部分。


从其超级视图中删除视图会释放它。

在将editView从其超级视图中删除之前,请提交更改。 您可以在editView中覆盖removeFromSuperview,并在调用super removeFromSuperview之前进行数据操作。

或者,您的视图控制器可以在删除它之前从editView中获取数据。