iOS:数据在传递给另一个ViewController后消失

时间:2013-11-04 15:14:04

标签: ios properties uiviewcontroller storyboard

我的应用中存在问题。 当我以这种方式将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时,它没有......它就消失了......

2 个答案:

答案 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];
用这种方式我看到了我的观点!!!