2011-06-10 63 views
1

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

回答

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

2

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

以下声明将在您的EditView中。

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

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

[mySuperFrameView updateMySuperView]; 

updateMySuperView是你superview的一部分。

+0

@Jhaliya感谢您的现货生存。我将在我的应用程序上实现您的代码。 – 2011-06-10 05:59:41

+0

你好朋友我实现你的代码。我叫FrameView * mySuperFrameView =(FrameView *)self.superview;在EditView中,但是有一个错误是在'Request for member'superview'这一行是不是结构或联合'。 self.superview选项可用。任何更多的想法。请保存我的一天.. – 2011-06-10 06:04:13

+0

只需更改 FrameView * mySuperFrameView =(FrameView *)self.view.superview; – iAmitWagh 2011-06-10 06:12:16

0

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

在从其超级视图中删除editView之前提交您的更改。您可以在编辑视图中覆盖removeFromSuperview,并在调用super removeFromSuperview之前进行数据处理。

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