1

私は iOS 開発の初心者です。アプリに 2 つのビュー コントローラーがあります。アプリで最初のビュー コントローラーから 2 番目のビュー コントローラーに移動しようとしています。

SecondView *ss=[[SecondView alloc] initWithNibName:@"Second Page" bundle:nil];
    [self.navigationController pushViewController:ss animated:YES];

このコードは「スタック オーバーフロー」で見つかりましたが、機能しません。

4

2 に答える 2

1

このエラーが発生するのは、ナビゲーター コントローラー コード (プッシュ) を使用して 1 つの VC から別の VC に移動しようとしている可能性が高く、コードまたは Interface Builder でナビゲーション コントローラーをセットアップしていない可能性が高いためです。

ただし、Navigation Controller を使用せずに VC を表示/非表示にすることができます。これから始めることをお勧めします。

用語に注意してください。push/pop はナビゲーション コントローラー スタック上の VC に使用され、present/dismiss は (Navigation Controller スタックではなく) 他の VC 上の VC に使用されます。

別の VC の「トップ」に VC を表示する方法は 2 つあります。これは、その VC が SB にも存在するかどうかによって異なります。

1- VC が IB に存在せず、プログラムで VC を作成して提示するだけの場合は、次のことができます。

 MyUIViewControllerSubclass *myLittleSubclass=[[MyUIViewControllerSubclass alloc]init];
 myLittleSubclass.view.frame=self.view.frame; //this is for example only
 [self presentViewController:myLittleSubclass animated:YES completion:nil];

上記の場合、MyUIViewControllerSubclass Objective C クラスを最初にプロジェクトに追加し (追加ファイルを使用)、上記のコードを配置するクラスにインポートする必要があります。

後でそれを閉じるには、MyUIViewControllerSubclass クラス自体から次のコードを使用できます。

 [self.parentViewController dismissViewControllerAnimated:YES completion:nil];

2- MyUIViewControllerSubclass Objective C クラスをプロジェクトに (追加ファイルを使用して) 既に追加しているが、IB を使用してそれを設計する予定であり、IB に VC を追加し、IB でそのクラスを MyUIViewControllerSubclass に変更した場合は、次に、このコードを使用できます。

mySubclass *myLittleSubclass=[self.storyboard instantiateViewControllerWithIdentifier:@"theVC"];
[self presentViewController:myLittleSubclass animated:YES completion:nil];

上記と同様に退会できます。SB で VC をクリックし、ID インスペクタで SB ID を「theVC」として入力し、「Use SB ID」をチェックしてください。

お役に立てれば。

于 2013-03-08T15:31:10.660 に答える
0

ニブ名が であることを確認してくださいSecond Page。あなたのクラス名はSecondViewであり、nib(xib) 名は Second Page であり、それだけがナビゲートします。

于 2013-03-08T04:38:31.023 に答える