1

ここに私の製品controller.hがあります

ProductListViewController *productListViewController;
ProductGridViewController *productGridViewController;
UIButton *flipIndicatorButton;  

私の実装では、このようなサブビューとしてリストとグリッドビューを追加しています

ProductListViewController *listController = [[ProductListViewController alloc] initWithNibName:@"ProductListView" bundle:nil];
self.productListViewController = listController;
self.productListViewController.CurrentSale = CurrentSale;
[self.view insertSubview:listController.view atIndex:0];

しかし、このようにProductListViewController.mからdetailviewコントローラーをプッシュしようとしたとき

ProductDetailViewController *productDetailViewController = [[ProductDetailViewController alloc] init];

productDetailViewController.productIndexPath = indexPath;

[self.navigationController pushViewController:productDetailViewController animated:YES];

うまくいかないので、 [self.navigationController] をチェックします。nil でした。この問題の対処方法を教えてください。より明確にするために、さらにコードと詳細を提供する準備ができています。ありがとう

4

5 に答える 5

2

Navigation Controller はどこで作成していますか? ある時点で (おそらく App Delegate で)、次のようなものが必要です。

ProductsController *productsController = // create ProductsController
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:productsController];

次に、navController のビューをサブビューとしてウィンドウに追加します。

もう 1 つの問題は、1 つの画面に対してあまりにも多くのビュー コントローラーを使用しているように見えることです。Apple では、画面ごとに 1 つだけを推奨しています。

于 2009-12-31T03:26:04.430 に答える
1

私は最近同じ問題を抱えていました!ビューコントローラーのviewWillAppear:メソッドでviewControllerを「ポップ」([self.navigationController popViewControllerAnimated:YES])しました。したがって、このコードを削除して同じコードを viewDidAppear: メソッドに挿入したところ、機能しました。

于 2011-08-01T08:52:40.410 に答える
0

navigationController が常に nil である理由がわかりました。一連のビュー全体が UINavigationController に含まれている必要があります。これは、階層の最初のビューが rootViewController でなければならないことを意味します。bpapas コードが動作するはずです。

于 2011-06-11T15:47:37.267 に答える
0

昨日、同様の問題に遭遇しました:

Tab Bar View - Table View - View

テーブルビューコントローラーでは、「詳細ビュー」コントローラーをプッシュしたかったのです[self navigationController] が、nilここにありました。解決策は、この取り決めに行くことでした:

Tab Bar View - Navigation View - Table View - View

追加のナビゲーション コントローラーにより[self navigationController]、テーブル ビュー コントローラーで動作するようになりました。

于 2010-03-12T14:40:46.047 に答える
0

この問題の回避策を見つけました。今私がやっていることは、この場合は ProductsController の親コントローラーの参照を渡し、次のビューをプッシュするメソッドを記述していることです。これに続いて、親メソッドを呼び出して、この [parent pushNextview] のような次のビューをプッシュしています。これまでのところうまくいきます。これが私がやりたかったことを行う良い方法であることを願っています.

于 2010-01-09T21:42:33.573 に答える