如何从 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】:您可以使用UIView
的superview
属性访问任何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?的主要内容,如果未能解决你的问题,请参考以下文章