私の問題は、iOS 6 のタブ付きアプリケーションにあります。私の進行中の作業には 5 つのタブがあり、いくつかのタブは他のビュー コントローラーへのゲートウェイです。ほとんどのページは、配列、文字列などとして格納されたデータを含む Model オブジェクトにアクセスする必要があります。必要最小限のモデルは実行時に取り込まれ、ユーザーはアプリケーションのライフスパン全体でモデルを追加できます。たとえば、以下にリストされているコードは私の AppDelegate ファイルからのもので、必要最小限のモデルへのポインターを Project View Controller に渡しています。これは問題なく動作します。タブ アプリケーションはナビゲーション コントローラー配列スタックを使用します。プロジェクト ページがインデックス 2 にあることがわかっているので、そこにモデルを送信できます。
私の問題は、プロジェクト ページのサブ ビューに関係しています。たとえば、Project ページのサブビューとして、ユーザーがファイル操作を処理する File_IO ページがあります (またはあるはずです)。File_IO ページも Model オブジェクトにアクセスする必要があります。しかし、モデル ポインターをプロジェクト ページから File_IO ページに送信しようとすると、以前に使用した手法 (AppDelegate からプロジェクトへ) が機能しません。FileIO ViewController で空のモデルを指定します。
コード例: これは AppDelegate 内にあり、正常に動作します: Project ViewController の必要最小限のモデルにデータが入力されます。
//To the Project View Controller...
UINavigationController *project_NavigationController =
[[tabBarController viewControllers] objectAtIndex:2];
Project_ViewController *project_ViewController =
[[project_NavigationController viewControllers] objectAtIndex:0];
//This hides the navigation bar on the project page but it also removes the bar on any subsequent pages! They need to be programmmatically reset in ViewDidLoad.
[project_NavigationController setNavigationBarHidden:YES animated:YES];
project_ViewController.currentGeoModel = newGeoModel;
現在、私の Project_ViewController は NavigationController に埋め込まれており、4 つの子 ViewControllers があります。1 つは FileIO_ViewController という名前です。Project_ViewController から FileIO_ViewController に currentModel を渡したいと思います。- (void)viewDidLoad メソッドの下で、いくつかのことを試しましたが、うまくいきません。例えば、
UINavigationController *project_NavigationController = (UINavigationController *) self.presentedViewController;
FileIO_ViewController *fileIO_ViewController = [[project_NavigationController viewControllers] objectAtIndex:1];
fileIO_ViewController.currentModel = currentModel;
コンパイルしますが、FileIO_ViewController メソッド内で currentModel にアクセスしようとすると、空になります。
誰かが時間をかけて助けてくれるなら、私はとても感謝しています. 私にとっての最良の答えは、モデルのようなオブジェクトへのポインターを ViewController から別の ViewController に渡す方法を示す明示的なコード例の形式になるでしょう。(私の例では、Index 1 を使用しましたが、Project_ViewController の下に他の 3 つの ViewController があるため、FileIO_ViewController がどの Index に存在するかは実際にはわかりません。いくつかの整数を試しましたが、成功しませんでした。)
もしあなたがこれに答えるなら、iOS 6 と Objective C に関しては、私を初心者だと考えてください -- Mount Apple を登るのには長い道のりがありましたが、私はまだトップに近づいていません!
ありがとう
ティム・レッドフィールド ノルウェー