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

Posted

技术标签:

【中文标题】如何从 iPad 中的子视图更新 Superview?【英文标题】:How to update Superview from its Subview in iPad? 【发布时间】:2011-06-10 05:29:32 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

以下声明将在您的EditView 中。

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

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

[mySuperFrameView updateMySuperView];

updateMySuperView 是您的superview 的一部分。

【讨论】:

@Jhaliya 感谢您的现场响应。我会在我的应用程序上实现你的代码。 你好朋友我实现了你的代码。我调用了FrameView mySuperFrameView = (FrameView)self.superview;在 EditView 中,但这一行中有一个错误是“请求成员 'superview' 不是结构或联合”。 self.superview 选项可用。还有什么想法。请保存我的一天.. 只需更改 FrameView* mySuperFrameView = (FrameView*)self.view.superview; 我为我的问题找到了一个答案,它对我有用。谢谢你的朋友。 @Yuvaraj.M :很好,建议您与他人分享。【参考方案3】:

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

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

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

【讨论】:

以上是关于如何从 iPad 中的子视图更新 Superview?的主要内容,如果未能解决你的问题,请参考以下文章

在根视图控制器上管理视图控制器,如 iPad 中的子视图

如何将数据从父模型类传递到 SwiftUI 中的子视图

无法自动更新表格视图中的子值

如何在 iPad 的视图控制器中创建多个表格视图?

iPad 应用程序中的旋转

ipad - 拆分视图