1

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

4

3 回答 3

5

我找到了从子视图更新超级视图中某些内容的代码。请在您的子视图中使用此代码。它将调用您的超级视图 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

于 2011-06-14T04:41:14.323 回答
2

您可以UIView使用superview.UIView

以下语句将在您的EditView.

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

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

[mySuperFrameView updateMySuperView];

updateMySuperView是您的superview.

于 2011-06-10T05:37:55.487 回答
0

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

在从其父视图中删除 editView 之前提交您的更改。您可以removeFromSuperview在 editView 中覆盖,并在调用super removeFromSuperview.

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

于 2011-06-10T05:40:03.953 回答