我通常使用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。我之前使用过这种方法,但从未使用过导航控制器。我想这与hte堆栈有关 - 但我找不到我做错了什么!
非常感谢帮助!!
*更新*
我现在用过
AddNewViewController *addNewViewController = [[AddNewViewController alloc] init];
[self.navigationController pushViewController:addNewViewController animated:YES];
推送视图控制器。在我的代码中,我试图访问tableview以使用以下代码重新加载它
[self.navigationController.mainTableView reloadData];
但是无法访问mainTableView。我已声明并同步它但仍无法看到它。我也尝试循环并使用堆栈的元素[0](如下所示),但也没有得到任何地方!
NSArray *controllers = [[NSArray alloc] initWithObjects:self.navigationController.viewControllers, nil];
UIViewController *tmpController = [[UIViewController alloc] init];
tmpController = [controllers objectAtIndex:0];
答案 0 :(得分:0)
首先,
[self presentModalViewController: addNewViewController animated:YES];
做了与
不同的事情[self.navigationController pushViewController:addNewViewController animated:YES];
这些方法的名称应该说明一切。
appDelegate.navigationController不是你的 rootViewController。它是UINavigationController。您可以使用self.navigationController.viewControllers获取附加到navigationcontroller的viewControllers的NSArray。索引0处的项应该是您的rootViewController。
如果在navigationControllers堆栈上推送viewController,则无需使用appdelegate。您可以使用self.navigationController访问navigationController。