0

iOS開発の新機能。私が間違っている場合は親切に訂正してください。

私はUIWindowを持っています、そしてrootviewcontrollerは:

@interface ViewController : UIViewController
{
IBOutlet UIButton *but;
}

@property (nonatomic, strong) UIButton  *but;
-(IBAction) butButtonPressed;

@end

つまり、このViewcontrollerをルートView Controllerとして作成すると、ViewControllerで使用可能なUIViewが表示されます。了解した。

UIViewControllerから継承された新しいクラスとその.xibファイルを作成しました。

したがって、xibファイル名は:view1.xib、

私の目的は、ボタンが押されたときにこのビューを表示することです。

これでボタンが作成され、ボタンを押すとbutButtonPressedが呼び出されます。butButtonPressedの内部で、私は次のことを行いました。

  myViewController *vcontroler = [[ViewController alloc] initWithNibName:@"view1" bundle:nil];
    [self.view.window addSubview:vcontroler.view];

アプリケーションがクラッシュします。私は何が間違っているのですか?親切に指摘してください。

4

1 に答える 1

1

これ...

[self.view.window addSubview:vcontroler.view];

...これは本当に悪い戦略です(そして、人々が意見を示す方法としてそれをどこで見つけているのかを真剣に知りたいと思います)。ビューコントローラを作成する場合は、ビューをリッピングできる一時的なコンテナとして扱うのではなく、それを使用する必要があります。

最初のコントローラーの子のように見せたい場合vcontroler(そしてあなたが持っている場合UINavigationController)は、を使用しますpushViewController:animated:。それ以外の場合は、を使用してモーダルとして表示できますpresentModalViewController:animated:

既存のディスプレイにビューを追加するだけの場合は、ビューをViewControllerの階層に配置して表示/非表示にします。

どうしてもサブコントローラーとして使用する必要ViewControllerがある場合は、そのサブコントローラーへの参照を保持し、所有するコントローラー内でそのライフサイクルを管理する必要があります。

于 2012-08-06T12:35:32.647 に答える