2011-08-24 6 views
2

私は全体の午前、向きの変更についての1つのビューコントローラから2番目のnibファイルを読み込む方法を理解しようとしていますが、ここに来て助けを求める。ことは、デバイスが回転しているときにランドスケープ・ファイルをロードしたいということです。私は今のところこのコードを持っています。どのように複数のnibファイルのための1つのビューコントローラを持っているiphone

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    if (toInterfaceOrientation==UIInterfaceOrientationLandscapeRight || toInterfaceOrientation==UIInterfaceOrientationLandscapeLeft) { 
     [self initWithNibName:@"myNibFile" bundle:nil]; 
    } 
} 

新しいペン先がロードされていません。インターフェイスビルダーでは、私はファイルの所有者がこのビューコントローラに設定されているので動作するはずです。私も試した:[[NSBundle mainBundle] loadNibNamed:@"myNibFile" owner:self options:nil]; しかし、私は運がなかったいずれかのinitWithNibNameまたは便利なリンクからnibファイルを読み込む方法の例を提供できますか?私はウェブ上でそれを見つけるようではありません。

ありがとうございます。

+0

を以下ました新しいペン先がロードされると、既存のビューで設定した値(テキストフィールド、ボタン状態など)は失われます。インターフェイスビルダーでサイズインスペクタのサイズ、配置、自動サイズ設定の機能を理解することをお勧めします。これらの設定を適切に設定することで、レイアウトを自動的にレイアウトに合わせることができます。 – gamozzii

答えて

0

このため、クラスの新しいインスタンスを作成しています。実行時にView Controllerのペン先を変更することはできません。

1つのビューコントローラ用に複数のnibファイルを作成するのはなぜですか。単一のnibファイルとユーザに複数のビューを作成するだけです。

0

実行時にコントローラのペン先を変えることはまったく良いことではありません(可能であれば、法的に)。それは、メモリ内にぶら下がっているペン先に、最終的なメモリリークである&をもたらす可能性があります。私は戻って同じ問題に遭遇した& IB & nibsを使用しないことが最も簡単な方法であることが判明しました。(運良く私の見解はあまり複雑ではありませんでした)。解決策は、コード&のサブコンポーネントをレイアウトすることで、向きの変更に応じて調整することでした。私は、あなたの店は、すべての新しいペン先などの任意のビューコンポーネントに再接続されます、あなたがこれを達成しない場合でも、私のUIViewController subclass-

-(void) adjustLayout:(UIInterfaceOrientation)orientation 
{ 
    if(UIInterfaceOrientationIsPortrait(orientation)) 
    { 
     mySubview1.frame = frameInAccordanceWithPortrait; 
    } 
    else 
    { 
     mySubview1.frame = frameInAccordanceWithPortrait; 
    } 
} 

- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; 
    [self adjustLayout:toInterfaceOrientation]; 
} 

HTHに

Akshay

関連する問題