VC1 は、コンテナー ビューに VC2 を埋め込みます。VC2 はテーブル VC です。
VC2 のセルをクリックすると、VC3 がプッシュされます。
VC3 は、コンテナー ビューに VC4 を埋め込みます。
VC4.m 内から VC1 への参照 を取得するにはどうすればよいですか?
試しself.parentViewController.presentingViewController.parentViewController
てみself.parentViewController.presentingViewController
ましたが、うまくいかないようでした。
しかし、デリゲートを使用して VC1 への参照を格納したときに、それが機能するかどうかを確認することにしましたが、それでも VC1 のすべてのパブリック プロパティに対して null を取得していました。このシナリオでは、VC1 はメモリ内にありませんか? そうでない場合、なぜですか?もしそうなら、なぜその (強い) プロパティが null になるのでしょうか?
編集:また、NSLogs を介して、VC2 でデリゲート参照の実行と設定が完了viewDidLoad
する前に VC4 で実行されることを発見しました。これは、そのアプローチが機能しない理由を説明している可能性があります。didSelectRowAtIndexPath
次の VC が の他のすべての行の完了時にのみプッシュされるようにするにはどうすればよいdidSelectRowAtIndexPath
ですか? それに関係なく、VC1には行が選択される前にすでに設定されている(nullではない)他のパブリックプロパティがあり(VC2のNSLogでこれを確認しましたdidSelectRow
)、アクセスしようとするとnullになりますそれらは、VC4 を介して任意のアプローチで送信されます。
(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Navigation logic may go here. Create and push another view controller.
/*
<#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil];
// ...
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:detailViewController animated:YES];
*/
// set reference to selected convo. it is stored in ConversationsParentVC public property
self.conversationsParentVC.selectedConvo = self.conversationsParentVC.conversationsArray[indexPath.row];
// temp
AppDelegate *delegate = getAppDelegate;
delegate.activeVC = self.conversationsParentVC;
ConversationsParentVC *convosParentVC = (ConversationsParentVC*)delegate.activeVC;
NSLog(@"boop %@", delegate.activeVC);
NSLog(@"beep %i", convosParentVC.conversationsArray.count);
}