0

なんらかの理由でビューをプッシュできません。できる限り説明しようと思いますが、複雑なビューがたくさんあります。説明するのは悪夢ですが、次の方法があります。

 -(void)showDetailView{ 
DetailViewController *detailView = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
 [self.navigationController pushViewController:detailView animated:YES];
 [detailView release]; 
  }

これは機能し、詳細ビューをスタックにプッシュします。これは私のメイン ビューとメイン スレッドにあります。

したがって、テーブルビューには、別のビューコントローラーからビューを取得するサブビューを持つセルがあります。そのView Controllerにはさらにサブビューがあり、ユーザーがサブビューをクリックするとメソッドが呼び出されると言います。次に、mainView でこのメソッドを呼び出します。

したがって、新しいビューがプッシュされるはずだと考える人もいるでしょう。コードが実行され、エラーは発生しませんが、ビューは変更/切り替えられません。

呼び出されたView Controller内にビューをプッシュするさまざまな方法を試しました。次に、ナビゲーションコントローラーに直接接続されているメソッドを呼び出してビューをプッシュします。

追加するいくつかのこと。1. ビューをプッシュする IBAaction ボタンがあります (正常に動作します)。3. メソッドがメイン ビューから呼び出されたときに、self.navigationcontroller が null でないことを確認しました。

ただし、ナビゲーション コントローラーがメソッド call it = null を介して呼び出された場合。

では、ナビゲーション コントローラーの null 値を復元する方法はありますか?

ビューをプッシュするメソッドを単純に呼び出すことができない理由について少し混乱しています

ありがとう

4

2 に答える 2

1

今日、ほぼ同じ問題が発生しました。ビューをプッシュしたときにナビゲーション バーが非表示になっている場合は、ナビゲーション コントローラーが nil である可能性があります。私はこのように問題を解決します:

self.navigationController.navigationBarHidden = NO; // So the navigation controller is not nil
[self.navigationController pushViewController:articleInfoController animated:YES];
于 2011-06-11T19:38:59.127 に答える
1

大丈夫です、今並べ替えました

私のビューへの優れたスーパービューへのアクセスをどのように解決したかという点では、

サブビューがあるセルであるビュー スーパービューへの ID タグ

id CellController = [self.view.superview.superview nextResponder];
[CellController performSelector:@selector(showDetailView:) withObject:Link];

次に、セル内のメソッドを呼び出し、そのメソッドがそのスーパービューにアクセスします

id mainController = [self.view.superview.superview nextResponder];
[mainController performSelector:@selector(showDetailView:) withObject:Link];

メインはまだナビゲーションコントローラーを保持しており、メインの show detail メソッドでリンクを渡し、新しいビューをプッシュします。

基本的に、サブビューの合計スーパービューは、それが作成された場所より高くすることはできません。したがって、セル内のサブビューは、mainView を介して適切にアクセスして実行することはできませんでした。したがって、セルがメイン ビューにあるため、最高レベルのスーパービューにアクセスし、そのスーパービューにアクセスしてから、メソッドを正しく実行できます。

これが理にかなっていることを願っています。

おかげで ->スーパーのView Controllerにアクセスするにはどうすればよいですか?

Id タグ ビットについては、このように Id を使用しなかったため、別のことを学びました

于 2010-10-19T09:31:29.360 に答える