興味深い問題があります。私は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に移動しましたが、これで問題は解決しませんでした。
助けてください :)