メインビューコントローラーとポップオーバービューの間でメッセージを渡すことはできません
-
29-10-2019 - |
質問
メインビューコントローラーと、ポップオーバービュー(iPad)内に表示されているテーブルビューコントローラーの間で、いかなる種類の通信も取得できないようです。
通常の方法でナビゲーションコントローラー内でテーブルビューを設定します。
// create popover
if (self.popoverController == nil) {
filesViewController = [[[MyTableViewController alloc] initWithFiles:fileList] autorelease];
UINavigationController *navCtrl = [[[UINavigationController alloc] initWithRootViewController:filesViewController] autorelease];
self.popoverController = [[UIPopoverController alloc] initWithContentViewController:navCtrl];
self.popoverController.delegate = self;
// resize popover
self.popoverController.popoverContentSize = CGSizeMake(320.0, 44 + [fileList count] * 44);
}
すべてが正常に動作しており、ファイル名(Filelist)の配列をテーブルビューに渡します。テーブルビューは、ListOffilesと呼ばれる配列としてテーブルビューに保持されています。テーブルビューには、ファイル名が表示され、ユーザーが選択したときに、そのファイル名をメインビューコントローラーに渡したいと思います。ただし、テーブルビューのdidsElectrowatindexpathメソッドからメインVCまでのコミュニケーションが戻ることはできません。私はあらゆる種類のアウトレットをさまざまな方向に向けて試してみましたが、テーブルビューから来るファイル名を処理するために、didsElectrowatindexpathで新しいオブジェクトを作成しようとしました。ファイル名を新しいオブジェクトに渡すことができますが、それをメインVCに送ろうとすると、再びヌルになります。そのポップオーバーがアクティブになっている間、私がメインVCに送信するものはすべてnullとして現れます。
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
NSLog(@"%@", handler.addressForImageFile);
self.popoverController = nil;
[self.popoverController release];
}
私のメインのVCが私のテーブルビューからnullオブジェクト以外に何も得られない理由はありますか?私は非常に多くの異なることを試して何日も費やしました。ポップオーバーがどのように機能するかについて、私の知識に根本的なギャップがあると感じています。確かに、テーブルビューから選択されたときに、私のメインVCに文字列を送り返す簡単な方法がありますか?
助けてくれてありがとう!
解決
これを行うにははるかに良い方法がありますが、文字列を渡すという目標によっては、nsuserdefaultsを使用することができます。