我的应用中存在问题。 当我以这种方式将UIView传递给SecondViewController时
SecondViewController *second = [self.storyboard instantiateViewControllerWithIdentifier:@"secondviewcontroller"];
second.currentView = currentView;
(second.currentView是我在SecondViewController中的属性,我传递给它我的视图)
此时,它一切正常,我的SecondViewController正确显示我的currentView,但当我在FirstViewController中重新启动时,我的currentView消失了! 为什么?你能帮助我吗?感谢
更新
在FirstViewController.h中
IBOutlet UIView *currentView;
在FirstViewController.m中
SecondViewController *second = [self.storyboard instantiateViewControllerWithIdentifier:@"secondviewcontroller"];
second.currentView = currentView;
[self presentViewController:second animated:NO completion:nil];
在SecondViewController.h中
@property (nonatomic, strong) UIView *currentView;
在SecondViewController.m中
- (void) viewDidAppear:(BOOL)animated{
[self.view addSubview:self.currentView];
self.currentView.center = CGPointMake(self.view.bounds.size.width/2, self.view.bounds.size.height/2);
}
这是我在两个ViewControllers中的代码,当我在FirstViewController中返回currentView时,它没有......它就消失了......
答案 0 :(得分:0)
视图只有超级视图,因此当您将视图添加到SecondViewController
时,您需要将其添加到其视图层次结构中,从而从当前视图控制器中删除。当你打电话时:
- (void) viewDidLoad{
[super viewDidLoad];
// Here the view is removed the first view and placed on the second view.
[self.view addSubView:self.secondView];
}
因此,如果要在第一个视图中将其添加回来,则需要再次添加它以查看第一个视图的层次结构。
beter 解决方案会将数据传递给下一个视图控制器,而不是查看模型。就像传递持有视图中显示的数据的模型对象一样。
答案 1 :(得分:-1)
我解决了我的问题!!!
当我在FirtsViewController中返回时,我必须在我的self.view中以最后位置添加一个新视图我的视图:
[self.view addSubview:currentView];
[currentView setCenter:initially_center_view];
用这种方式我看到了我的观点!!!