0

私は通常 UIViews を使用してアプリを作成しますが、これはナビゲーションコントローラーを使用しています。配列にアイテムを追加したいビューを一番上にプッシュしています。ただし、メインのナビゲーションコントローラーメソッドなどにアクセスできません。セットアップは次のとおりです

1) AppDelegate はナビゲーション コントローラーを追加します

[window addSubview:navigationController.view];

2) RootViewController で、新しい UIView をプッシュします

AddNewViewController *addNewViewController = [[AddNewViewController alloc] init];
[self presentModalViewController: addNewViewController animated:YES];

3) AddNewViewController から、メインの RootViewController にアクセスしたいのですが、何にもアクセスできないようです。すべてのメソッドなどは、以前に行ったように (UIViews を使用して) 宣言されています。このコードは、RootViewController で何も見つかりません。

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.navigationController myFunction];

RootViewController.h ファイルに myFunction があります。以前にこの方法を使用したことがありますが、ナビゲーション コントローラーを使用したことはありません。それはスタックに関係していると思いますが、何が間違っていたのかわかりません!

助けていただければ幸いです!!

* アップデート *

私は今使用しました

AddNewViewController *addNewViewController = [[AddNewViewController alloc] init];
[self.navigationController pushViewController:addNewViewController animated:YES];

ビューコントローラーをプッシュします。私のコードでは、次のコードでテーブルビューにアクセスしてリロードしようとしています

[self.navigationController.mainTableView reloadData];   

ただし、mainTableView にはアクセスできません。宣言して同期しましたが、まだ表示されません。また、スタックの要素[0]をループして使用しようとしましたが(以下のように)、それでもどこにも行きませんでした!

NSArray *controllers = [[NSArray alloc] initWithObjects:self.navigationController.viewControllers, nil];

UIViewController *tmpController = [[UIViewController alloc] init];
tmpController = [controllers objectAtIndex:0];
4

1 に答える 1

0

First of all,

[self presentModalViewController: addNewViewController animated:YES];

does something different than

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

The names of those methods should speak for themselves.


And appDelegate.navigationController is not your rootViewController. It is the UINavigationController. You can get an NSArray of viewControllers attached to the navigationcontroller with self.navigationController.viewControllers. Item at index 0 should be your rootViewController.

If you push the viewController on the navigationControllers stack there is no need to use the appdelegate. You can access the navigationController with self.navigationController.

于 2010-10-10T10:06:59.190 に答える