0

ビューからビューに変更するたびに、ビューの変数とコンテンツが「デフォルト」にリセットされます。たとえば、ビューでラベルのテキストフィールドをデフォルトの「ラベル」を「こんにちは」に変更し、ビューを変更します。同じビューに戻ると、テキストは再び「ラベル」になります。

これまで私がこれを回避した唯一の方法は、静的文字列を設定してから、viewDidLoadでLabel.textを文字列に変更することです。私はこれがそれを行う方法ではないことを知っています。ビューからビューへの移行方法(割り当てや開始など)に関係しているという予感があります。

私が移行する現在の方法:

FirstView.h:
@interface FirstView : Engine
@property(nonatomic, readwrite) MainGameDisplay *secondView;

FirstView.m:
@implementation FirstView

- (IBAction)StartGame:(id)sender 
{ 
    if (! self.secondView)
    self.secondView = [[MainGameDisplay alloc] initWithNibName:nil bundle:nil];
    [self presentViewController: self.secondView animated:YES completion:NULL];
}

そしてMainGameDisplay:

MainGameDisplay.h:
@class ViewController;

@interface MainGameDisplay : Engine
@property (strong) ViewController *firstPage;

MainGameDisplay.m:
@implementation MainGameDisplay

- (IBAction)returnToHome:(id)sender {
    if (!self.firstPage)
        self.firstPage = [[ViewController alloc] initWithNibName:nil bundle:nil];
        [self presentViewController: self.firstPage animated:YES completion:NULL];
}

私が望んでいるのは、viewDidLoadを介してすべての値を再度設定する必要がないことです。これは、優れたプログラミングスタイルであるとは思えません。

4

1 に答える 1

1

何がうまくいかなかったのか、あなたは正しい疑いを持っています。メソッドを呼び出してreturnToHome:も、実際にはどこにも戻ってこないので、既存ViewControllerのものの上に新しいコピーをスタックします。

実際に戻るには、の反対はpresentViewController:ですdismissViewControllerAnimated:MainGameDisplayボタンを押して戻るときに、クラス内でそれを使用してみてください。

于 2012-11-13T20:40:06.717 に答える