0

重複の可能性:
didSelectRowAtIndexPath の前に viewDidLoad が呼び出されている

新しいビューに変数を渡そうとしています。次のコードがあります。

appDelegate *dataCenter = (AppDelegate*)[[UIApplication sharedApplication] delegate];

dataCenter.myVariable = [array objectAtIndex:indexPath.row];

の中に

didSelectRowAtIndexPath

呼び出しビューの。ただし、私が抱えている問題は、次のビューの vewDidLoad 関数でこの変数が空であることです。これは、呼び出し元のビューの didSelectRowAtIndexPath の前に発生したためです。ビューをリンクするためにストーリーボードを使用しています。どちらもUITableViewです。

ヒットバックしてからテーブル要素を再選択すると、それが設定されます。ヒットバックしてから再度選択するまでに、変数が設定されます。実行順序を指定する方法はありますか? バックエンドでUIビューの切り替えをしたくありません。

どんな助けでも大歓迎です!

4

1 に答える 1

1

didSelectRowAtIndexPath でデータを NSUserDefaults に保存してから、viewDidLoad で NSUserDefaults から保存されたデータを読み取ります。

-(void) didSelectRowAtIndexPath {
    NSUserDefaults *infoSaved = [NSUserDefaults standardUserDefaults];
    [infoSaved setObject:myVariable forKey:@"myvariable"];
    [infoSaved:synchronize];

    // then call the new view to load
}

ロードされた新しいビューでは、次のようになります。

-(void) viewDidLoad {
    NSUserDefaults *infoSaved = [NSUserDefaults standardUserDefaults];
    myVariable = [infoSaved objectForKey:@"myvariable"];

    // and use your variable
}

それが役立つことを願っています

于 2012-11-11T23:07:15.930 に答える