私はiOSプログラミングにまったく慣れていません。縦向きと横向きに別のビューが必要なアプリを開発しています。ビューが異なっていても、ボタンやその他のコントロールは両方のビューで同じです。したがって、ボタン/ラベルから両方のビューのView Controllerへの同じ接続を維持したいと考えています。ビューコントローラーでラベルの値を変更すると、表示しているビューに関係なくビューで変更されるはずです。
今私が直面している問題は、ストーリー ボードのアイテムに 2 つの異なるルート ビューを追加できないことです。メイン ビューに 2 つの異なるサブ ビューを追加しようとしました。そうすればビューを作成できますが、両方のビューのボタンを単一の接続に接続することはできません。例えば、
@property (strong, nonatomic) IBOutlet UIButton *buttonNext;
1 つのビューでのみ次のボタンに接続できます。
この問題を回避するために、ストーリー ボードに 2 つの異なるビューを作成し、両方に同じビュー コントローラーを追加しました。次に、次のように各ビューのセグエを作成しました。
@property (strong, nonatomic) IBOutlet UIView *portraitView;
@property (strong, nonatomic) IBOutlet UIView *landscapeView;
そして、私のView Controllerに追加しました:
- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
[self adjustViewsForOrientation:toInterfaceOrientation];
}
- (void) adjustViewsForOrientation:(UIInterfaceOrientation)orientation {
//NSLog(self.view.restorationIdentifier);
if (orientation == UIInterfaceOrientationMaskLandscape || orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight)
{
if(self.landscapeView == nil)
{
self.landscapeView =[[UIView alloc] init];
}
self.view = landscapeView;
}
else if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown)
{
self.view = portraitView;
}
}
問題は、2 番目のビューが正しく読み込まれていないことです。最初は nil としてロードされています。コードでビューを初期化しても、ビュー内のサブビュー/コントロールは初期化されません。私は過去3日間これにこだわっています。どんな助けでも大歓迎です。
編集1:
ここにサンプル コードを追加しました: http://cl.ly/2z3f3E290f0R