3

UIStoryboard のセグエを使用して、コードにビュー コントローラーを読み込みます。ユーザーが選択したいくつかのオプションに基づいて、アニメーションを使用して UI コントロールを表示または非表示にします。それはすべて正常に動作します。

- (void)showComments {
    NSLog(@"Show Comments");
    _commentsTextView.hidden = NO;
    _commentsTextView.frame = CGRectMake(435, 266, 475, 134);

    [UIView animateWithDuration:1 animations:^{
        _commentsTextView.alpha = 1;
        _signatureButton.frame = CGRectMake(435, 420, 475, 134);
        _cancelButton.frame = CGRectMake(568, 581, 100, 44);
        _finishedButton.frame = CGRectMake(676, 581, 100, 44);
    }];

}

次に、次のコードを使用して UIStoryboard で作成されたビュー コントローラーを提示します。

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPad" bundle:nil];

    SigningViewController *signingVC = (SigningViewController *)[storyboard instantiateViewControllerWithIdentifier:@"SigningViewController"];
    signingVC.object = self;
    signingVC.signatureProperty = @"employeeSignature";
    signingVC.startDate = self.startDate;
    signingVC.endDate = self.endDate;

    [self presentViewController:signingVC animated:YES completion:nil];

このコードが実行されると、UI コントロールを非表示または表示したすべてのカスタム アニメーションが元に戻ることを除いて、すべてが期待どおりに実行されます。あたかも presentViewController メソッドを呼び出すことによって、UIStoryboard から既存のビューを再描画しているようです。

新しいビューをモーダルに表示する前に、ストーリーボードから既存のビューの再描画/リロードを終了する方法はありますか?

4

2 に答える 2

0

私も同じ問題を抱えていました。モーダルが閉じるたびにアニメーションを変更しようとしても、元のストーリーボードにリセットされたように見えました。

私が取らなければならなかった解決策は、任意のアニメーション ビューをアウトレットとしてヘッダー ファイルに追加することでした。ストーリーボード上のビュー コントローラーの self.view またはメイン ビューからビューを取り出し、プログラムでサブビューとして追加します。フレームを必要な場所に設定すると、モーダルを終了した後、すべてのアニメーションの位置が同じになります。さらに説明が必要な場合は、私に知らせてください。

于 2013-10-24T03:32:29.400 に答える
0

私はまったく同じ問題を抱えていて、より詳細な形式でここに投稿しました。kokx という名前のユーザーが私を大いに助けてくれました。答えは私の質問ページに記載されています。

于 2015-07-10T12:40:47.023 に答える