0

それぞれのビューを作成するのに苦労していますSegmented ButtonsSegmented controlボタンは、Tab Bar Controller のいずれかのビュー内にあります。StoryBoardで作成しています。すでに同じ質問をしています(セグメント化されたコントロールボタンの個別のビューを作成しています)..解決策を待っています..

これが私のストーリーボードのスクリーンショットです。 ここに画像の説明を入力

また、試してみましEditor->EmbedIn->NavControllerたが、戻るボタン付きのnavBarとは別に表示されます。この同じディスプレイ内にもこれらの 3 つのビューが必要です (NavBar とセグメント ボタンと共に)。

ビューごとに、画像のリストを表示する機能がいくつかあります。そのため、UI も設計する必要があります。ParentView のサイズ (contentPlaceHolder など) に従って新しいビュー コントローラーを作成する可能性はありますか? UIでデザインする..事前に感謝..

4

1 に答える 1

1

以下のコードは、コンテナビューでコントローラを切り替える方法を示しています。IBでは、タブ付きのテンプレートから始め、FirstViewControllerの上部にナビゲーションバーとツールバーを追加し、セグメント化されたコントロールをツールバーに追加しました。次に、コンテナビュー(オブジェクトリストの通常のビューの横)をビューに追加し、タブバーとツールバーの間のすべてのスペースを占めるようにサイズを変更しました。コンテナビューとナビゲーションバーのタイトルアイテムへのアウトレットを作成し、メソッドchangeControllers:をセグメント化されたコントロールに接続しました。コンテナビューを追加すると、同じサイズのViewControllerが埋め込みセグエで自動的に接続されます。ビューコントローラーをさらに2つ追加し、サイズを「フリーフォーム」に変更し、サイズを組み込みコントローラー(320x411)と同じになるように調整しました。このサイズ変更は、IBでのレイアウトのみを目的としています。以下に示すように、ビューをコンテナーに追加するときに、コードでビューのサイズを変更する必要があります。このコードは、コンテナービューを持つコントローラーであるFirstViewControllerにあります。

@interface FirstViewController ()
@property (weak,nonatomic) IBOutlet UIView *containerView;
@property (strong,nonatomic) UIViewController *embeddedVC;
@property (strong,nonatomic) UIViewController *secondVC;
@property (strong,nonatomic) UIViewController *thirdVC;
@property (strong,nonatomic) UIViewController *currentController;
@property (weak,nonatomic) IBOutlet UINavigationItem *titleItem;
@end

@implementation FirstViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.embeddedVC = self.childViewControllers.lastObject;
    self.currentController = self.embeddedVC;
    self.titleItem.title = self.currentController.title;
}


-(IBAction)ChangeControllers:(UISegmentedControl *)sender {

        switch (sender.selectedSegmentIndex) {
            case 0:{
                if (![self.currentController isEqual:self.embeddedVC]) {
                    self.embeddedVC.view.frame = self.containerView.bounds;
                    [self addChildViewController:self.embeddedVC];
                    [self moveToNewController:self.embeddedVC];
                }
                break;
            }
            case 1:{
                if (! self.secondVC) {
                    self.secondVC = [self.storyboard instantiateViewControllerWithIdentifier:@"Second"];
                }
                if (![self.currentController isEqual:self.secondVC]) {
                    self.secondVC.view.frame = self.containerView.bounds;
                    [self addChildViewController:self.secondVC];
                    [self moveToNewController:self.secondVC];
                }
                break;
            }
            case 2:{
                if (! self.thirdVC) {
                    self.thirdVC = [self.storyboard instantiateViewControllerWithIdentifier:@"Third"];
                }
                if (![self.currentController isEqual:self.thirdVC]) {
                    self.thirdVC.view.frame = self.containerView.bounds;
                    [self addChildViewController:self.thirdVC];
                    [self moveToNewController:self.thirdVC];
                }
                break;
            }
            default:
                break;
        }
}


-(void)moveToNewController:(id) newController {
    [self.currentController willMoveToParentViewController:nil];
    [self transitionFromViewController:self.currentController toViewController:newController duration:.6 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{}
                            completion:^(BOOL finished) {
                                [self.currentController removeFromParentViewController];
                                [newController didMoveToParentViewController:self];
                                self.currentController = newController;
                                self.titleItem.title = self.currentController.title;
                            }];
}
于 2013-02-15T16:24:00.503 に答える