0

アプリに問題があります。この方法で 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);
}

これは 2 つの ViewControllers の私のコードであり、FirstViewController currentView に戻ると、そこにはありません...消えます...

4

2 に答える 2

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];
}

したがって、最初のビューに再度追加する場合は、最初のビューのビュー階層に再度追加する必要があります。

より良い解決策は、ビューではなくモデルにデータを次のView Controllerに渡すことです。同様に、ビューに表示されるデータを保持するモデル オブジェクトを渡します。

于 2013-11-04T15:17:43.267 に答える