viewDidLoad: で self.navigationController にアクセスする UIViewController サブクラスがあります。ビュー スタックのどこにあるかに応じて、navigationController を取得するか、nil を取得します。
スタックが「RootViewController -> MyViewController」の場合、有効なポインターを取得します。
私のスタックが「RootViewController -> AnotherViewController -> MyViewController」の場合、nil になります。
どちらの場合も、MyViewController は次のようにスタックにプッシュされています。
[self.navigationController pushViewController:self.myViewController
animated:YES];
MyViewController の上のスタックに別の ViewController をプッシュできるようにする必要があるため、これで行き詰まりました。最初のケースでは正常に動作しますが、2 番目のケースでは明らかに失敗します。