0

これについて2つ質問があります。まず、ナビゲーション コントローラーがストーリーボードに正常に配置され、タブとリンクされ、希望どおりに動作しています。一つのことを除いて。このようなコードを追加しようとすると、
[self.navigationController popToViewController:vc animated:YES] Property 'navigationController' not found on object of type 'AppDelegate *' というエラーが発生します。

入れる場所を間違えたからでしょうか?または、それがタブバーアプリケーションであり、何かが正しくないためです。

4

1 に答える 1

1

AppDelegate からナビゲーション コントローラーを呼び出そうとしているようです。ナビゲーション コントローラーと連携するように AppDelegate を具体的に設定していない限り (のサブクラスである必要がありUIViewControllerます)、AppDelegate クラスにナビゲーション コントローラーがないため (既定では)、エラーが発生します。したがって、その呼び出しを行うと、ナビゲーション コントローラーが見つかりません。AppDelegate がUIResponderではなくのサブクラスであることに注意してUIViewControllerください。

@interface AppDelegate : UIResponder <UIApplicationDelegate>

代わりに、ナビゲーション コントローラーを作成および/またはサブクラスに接続します。UIViewControllerその後、サブクラスから次のような呼び出しを行うことができます。

[self.navigationController popToViewController:vc animated:YES];

ナビゲーション コントローラーを作成してセットアップするには、次の手順に従います (ストーリーボードを使用していない場合は異なる場合があります)。

  1. 新しいUINavigationControllerObj-C サブクラスを作成します。Xcode メニュー バーで、 を選択するか、 +File > Newを押します。クラスに名前を付けて、そのスーパークラスを次 のように設定し ます。完全に新しいクラスが絶対に必要というわけではないことに注意してください。プロパティが使用可能である限り、-のサブクラスである既存のクラスを使用できます。CMDNUINavigationControllerUINavigationController サブクラスの追加
    UIViewControllernavigationController
  2. Xcode のオブジェクト ライブラリからナビゲーション コントローラーを追加し、必要な方法で設定します。
  3. Storyboard で NavigationController を選択し、 Utilities Panelを開き、Identity Inspector Tabを選択します。名前を自分のクラスまたはサブクラス Custom Classの名前に設定します。UIViewControllerUINavigationControllerナビゲーション コントローラー カスタム クラス Xcode 4.6
  4. navigationControllerクラスから、View Controller に関連する他の何百ものプロパティの中で、プロパティを使用できるようになります。AppDelegate は実際には、アプリをセットアップし、アプリ イベント (アプリの終了、アプリのバックグラウンド化、アプリの開始など) を処理するための場所であることを忘れないでください。
于 2013-07-25T15:13:39.213 に答える