質問

短:たいてフルスクリーン景色、スイッチングできるビューを見B.思いがけを使用タブバーのコントローラのだ。見たい方は、学習などでのフードです。

いUIViewControllerしていない商品については、ルートコントローラ:

@interface MyRootController : UIViewController {
    IBOutlet UIView *contentView;
}
@property(nonatomic, retain) UIView *contentView;

@end

のcontentViewに引っ掛けるUIViewったとして追加subviewの"ビュー"のペン先です。この緑色は、見るのでフルスクリーン.に働きます。

そして、また他のビューのコントローラはかり、同様に進めていく考えです。ViewControllerAとViewControllerB.ViewControllerAてみたらスノーボードではなく、背景には、ViewControllerBは黒い背景のもの。だが活躍しました。

そこで、実施のmyRootControllerくないと思っています:

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];

    ViewControllerA *vcA = [[ViewControllerA alloc] initWithNib];
    [self.contentView addSubview:vcA.view];

    [cvA release];
}

ちなみに-initWithNib方法は以下のようなものです:

- (id)initWithNib { // Load the view nib
    if (self = [super initWithNibName:@"ViewA" bundle:nil]) {
        // do ivar initialization here, if needed
    }
    return self;
}

まります。んからの眺めViewControllerAがさまざまなコースを提供しています。しかし、現在大きな問題はViewコントローラがホットスポット、または他のすべての方法のように:

  • (void)viewWillAppear:(BOOL)ニ;
  • (void)viewDidDisappear:(BOOL)ニ;
  • (void)viewDidLoad;

...などです。誰かというのは、こうしたメソッドが呼び出さい"っ"などにタブバーのコントローラ?い:まに配置するViewControllerのクラスを取得し、見える、うれしい気をつけて呼び出しその方法を教えてください。どのような知viewWillAppear,viewDidDisappear、viewDidLoad?このタブバーのコントローラはすべてこの"さん"のフードです。は私が悪いのでしょうか。

更新:私は試験します。だリリースのコントローラー(たとえば:ViewControllerA)そうなログメッセージviewDidDisappear.のみの割り当てが、初期化のViewControllerAを取得しますviewDidLoad.その青年が近づいてきました。なみ台にさんのUITabBarController今;)やってる方法を見つけ出すことを複製する。

役に立ちましたか?

解決

あなたは最も簡単なremoveFromSuperview / insertSubviewから始め、少しずつそれにコードを追加することができます。


//SwitchViewController.h
#import 
@class BlueViewController;
@class YellowViewController;

@interface SwitchViewController : UIViewController {
    IBOutlet BlueViewController *blueViewController;
    IBOutlet YellowViewController *yellowViewController;
}
- (IBAction)switchViews:(id)sender;
@property (nonatomic, retain) BlueViewController *blueViewController;
@property (nonatomic, retain) YellowViewController *yellowViewController;
@end

//1. remove yellow view and insert blue view
- (IBAction)switchViews:(id)sender {
    if(self.blueViewController.view.superview == nil)
    {
        [yellowViewController.view removeFromSuperview];
        [self.view insertSubview:blueViewController.view atIndex:0];
    }
}

//2. appear=insert, disappear=remove
if(blueViewController.view.superview == nil)
{
    [blueViewController viewWillAppear:YES];
    [yellowViewController viewWillDisappear:YES];

    [yellowViewController.view removeFromSuperview];
    [self.view insertSubview:self.blueViewController.view atIndex:0];

    [yellowViewController viewDidDisappear:YES];
    [blueViewController viewDidAppear:YES];
}

//3. now add animation
[UIView beginAnimations:@"View Flip" context:nil];
[UIView setAnimationDuration:1.25];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
//blue view will appear by flipping from right
if(blueViewController.view.superview == nil)
{
    [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromRight 
                            forView:self.view cache:YES];

    [blueViewController viewWillAppear:YES];
    [yellowViewController viewWillDisappear:YES];

    [yellowViewController.view removeFromSuperview];
    [self.view insertSubview:self.blueViewController.view atIndex:0];

    [yellowViewController viewDidDisappear:YES];
    [blueViewController viewDidAppear:YES];
}
[UIView commitAnimations];

他のヒント

iPhoneの開発を始めての第6章でビューを切り替えるの素晴らしい例があります。あなたはここでそれのソースコードを見ることができます: http://iphonedevbook.com/する

SwitchViewControllerは、プログラム的にビューを変更するには、コードを持っています。


- (IBAction)switchViews:(id)sender
{

    if (self.yellowViewController == nil)
    {
        YellowViewController *yellowController = [[YellowViewController alloc]
                initWithNibName:@"YellowView" bundle:nil];
        self.yellowViewController = yellowController;
        [yellowController release];
    }

    [UIView beginAnimations:@"View Flip" context:nil];
    [UIView setAnimationDuration:1.25];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

    UIViewController *coming = nil;
    UIViewController *going = nil;
    UIViewAnimationTransition transition;

    if (self.blueViewController.view.superview == nil) 
    {   
        coming = blueViewController;
        going = yellowViewController;
        transition = UIViewAnimationTransitionFlipFromLeft;
    }
    else
    {
        coming = yellowViewController;
        going = blueViewController;
        transition = UIViewAnimationTransitionFlipFromRight;
    }

    [UIView setAnimationTransition: transition forView:self.view cache:YES];
    [coming viewWillAppear:YES];
    [going viewWillDisappear:YES];
    [going.view removeFromSuperview];
    [self.view insertSubview: coming.view atIndex:0];
    [going viewDidDisappear:YES];
    [coming viewDidAppear:YES];

    [UIView commitAnimations];

}

だを正しく理解し、何をしようとしているの達成には非常に簡単です。

すぐUINavigationControllerション委員:

[navigationController pushView:vcA];

委譲呼ばれるめ

  • (void)viewWillAppear:(BOOL)ニ;
  • (void)viewDidDisappear:(BOOL)ニ;
  • (void)viewDidLoad;

としたいときにポップとデニースザメネースパークプ別:

[navigationController popViewControllerAnimated:true];
[navigationController pushView:vcB];

きたいと思っているnavigationControllerを示すだけで使用

[navigationBar setHidden:YES];

がnavigationBarのUINavigationBar対応するUINavigationController.

この古い問題かもしれないが、私は最近、同じ問題に出くわしたと苦労働いていた何かを見つけていました。私は、2つの相補的なビューコントローラを切り替えてみたかったが、私はスイッチをアニメーション化したい(アニメーションに建てられたが、正常に動作)、と私は可能であれば、それは絵コンテとの互換性になりたかったです。

内蔵の推移を生かしするために、UIViewのの<のhref = "http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html" のrel =」 nofollowを ">方法の+transitionFromView:toView:duration:options:completion:は美しく動作します。しかし、それだけのビューではなく、ビューコントローラ間で遷移します。

遷移がカスタムUIStoryboardSegueを作成全景コントローラだけでなく、ビューの間であるためには、

移動するための方法です。あなたはストーリーボードを使用するかどうかにかかわらず、このアプローチは、あなたが全体のトランジションをカプセル化し、次の1つのビューコントローラから関連情報の受け渡しを管理することができます。それだけでUIStoryboardSegueをサブクラス化して、-performを単一のメソッドをオーバーライド含まれます。

は、リファレンス実装については、 RAFlipReplaceSegue の私は、このアプローチを使用して一緒に入れて、正確なカスタムセグエを参照してください。それはUINavigationControllerスタック内にある場合にボーナスとして、それはまた、新しいと古いビューコントローラを置き換えます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top