私はiOS5に取り組んでおり、ストーリーボード、セグエー、さまざまな方向のビューを調整するのに苦労しています。過去数日間のアップルの援助を受けた後、私は答えを見つける場所が1つもないので、私は非常に注意深く明言し、次の結論に至りました。私は正しいかどうか誰かに教えてください。さまざまな向きのストーリーボード、エッジ、さまざまなビュー
1-ストーリーボードの使用は、セグを使用してください(これは初心者のための混乱です)。
2ナビゲーションコントローラに属するVCの間でのみセグを使用できます。
3一方、ナビゲーションコントローラを持っていても、あるVCから別のVCへのセグを使用する必要があるとは限りません。したがって、1つのVCから別のVCに移動しようとしている場合(最初のVCがNav Controllerに属しているかどうかにかかわらず)、次の操作を実行できます。
WhiteVCクラスとYellowVCクラスがあり、 WhiteVCビュー(ストーリーボード内にボタンを置き、汎用VCのクラスをWhiteVCに変更)をWhiteVCクラスのIBActionにリンクしました。
-(IBAction)GoToYellow
{
YellowViewController *YellowVC=[self.storyboard instantiateViewControllerWithIdentifier:@"myYellowVC"];
[self presentViewController:YellowVC animated:YES completion:nil];
}
をWhiteVCにYellowVCから戻るには、あなたはその後、別のボタンを作成します。これは、表示されるボタンをクリックして、YellowVCビューを持つことができるように、WhiteVC.mに、あなたが実装するコードになりますこれはYellowVCを閉じ、ホワイトVCに戻ります
-(IBAction)ReturnToWhiteVC
{
[self dismissViewControllerAnimated:YES completion:nil];
}
:YellowVCビュー上(上記と同じプロセスに従う)し、次のコードを使用します。
4-複数のビューを所有するVCを(インスタンス化する)ようにすることはお勧めできません。たとえば、異なる向きでは、ビューごとに別々のVCを作成する方がよいでしょう。 VCがMVCの一部として他のVCをインスタンス化するようにしても構いません。
5 Nav Controllerを搭載したアプリケーションを作成していたが、そのルートVCがランドスケープであるかポートレートであるかによって、ルートVCが異なる(ビューが異なる別々のVC)ため、すべてのことが起こった。だから、私はVCをプログラムでインスタンス化することができました(上記#3のように)。私はseguesを使用して移行をやってみたかった場合、アップルのヘルプドキュメントは、次のコードを提供したり、:
BOOL isShowingLandscapeView;
- (void)awakeFromNib
{
isShowingLandscapeView = NO;
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(orientationChanged:)
name:UIDeviceOrientationDidChangeNotification
object:nil];
}
- (void)orientationChanged:(NSNotification *)notification
{
UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;
if (UIDeviceOrientationIsLandscape(deviceOrientation) && !isShowingLandscapeView)
{
[self performSegueWithIdentifier:@"AlternateView" sender:self];
isShowingLandscapeView = YES;
}
else if (UIDeviceOrientationIsPortrait(deviceOrientation) && isShowingLandscapeView)
{
[self dismissViewControllerAnimated:YES completion:nil];// breakpoint shows that this is triggered
isShowingLandscapeView = NO;
}
}
を上記のコードは明らかにのみ(理由seguesの)ナビゲーションコントローラに適用され、それがときの向きに働きました肖像画から風景に変更されましたが、私が肖像画に戻ってくると、風景VCが肖像画に戻って回転してしまいます。私はここで間違って何をしていますか?
私は誰かがこれらの点を確認/確認し、私の質問に答えることができれば幸いです。 ありがとう KB
は「2 - あなただけのナビゲーションコントローラに属しているのVC間seguesを使用することができます。」 < - この部分は真実ではありません。ストーリーボード内の任意のビューコントローラ間をセグメントできます。 – sobri
私は同じ問題があります。私は「モーダル」へ風景ビューコントローラ上のセグエの種類を変更した場合は、その後、私はあなたが記述する動作を得ることはありませんが、私は私が望むものではないが、それは前にあったものよりも優れたナビゲーションバーを、失います – macgeezer