0

興味深い問題があります。私は3つのView Controllerを持っています(tableViewControler A、viewControler B、final tableViewController Cと名付けましょう)。それらはすべて、データのフィルタリングに関するものです。

AI でメイン カテゴリの 1 つを選択し、次のステップで、選択したカテゴリの名前を B に送信します (didSelectRowAtIndexPath では、このように

FilterTableViewController *fViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"filterTableView"]; //B view controller
fViewController.passedValue = [categories objectAtIndex:indexPath.row];

) コントローラ B の目的は、データの追加のフィルタリングです (残り時間がある場合、どのアイテムが最高価格かなど)。B は、passedValue (カテゴリ名の文字列) について言及しています。ユーザーがフィルターを選択してボタンをクリックすると、C がプッシュされます。

さて、C では、パブリック NSString "selectedCat" があります。この文字列には、C へのセグエを実行する前に、B で割り当てられたデータが必要です。

FilterResultViewController *resViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"resController"]; //C viewController
resViewController.selectedCat = passedValue;

今、Cでデータをリクエストしています。これは http リクエストであり、JSON を取得しています。これはすべてうまくいきます。ただし、私の問題は、selectedCat が (NULL) であることです。データがどこで失われるかを確認するために NSLogs を作成しました。私が見つけたものはさらに混乱しています。

ここに私のコンソールログがあります

2012-11-30 12:27:07.976 portal_postupne[4510:11303] selected sports //This NSLog is in A
2012-11-30 12:27:10.542 portal_postupne[4510:11303] category = (null)// This NSLog is in C
2012-11-30 12:27:10.653 portal_postupne[4510:11303] passed category: sports//This NSLog is in B and gets called on button click that pushes C

したがって、基本的に私の C ビュー コントローラーは B. の前に何らかの方法で呼び出されます。それが私のカテゴリが空である理由だと思います。また、A で C をインスタンス化し、A でカテゴリ値を設定しようとしました。再び Null です。

次に、viewWillAppear メソッドでテーブル ビューを作成しました。ただし、後でviewDidLoadに移動しましたが、これで問題は解決しませんでした。

助けてください :)

4

1 に答える 1

0

私はこれでそれを「解決」しましたが、おそらく間違ったアプローチでした。カテゴリ値を NSUserDefaults に保存しました。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [[NSUserDefaults standardUserDefaults] setObject:[categories objectAtIndex:indexPath.row] forKey:@"kategoria"];
    [defaults synchronize];

そして、HTTP リクエストのパラメーターを設定するときに C で呼び出します。

NSMutableString *parameters = [[NSMutableString alloc]init];
    [ms appendFormat:@"&category=%@",[defaults objectForKey:@"kategoria"]];

しかし、これが「正しい」アプローチだとは思いません。

于 2012-11-30T12:51:43.407 に答える