1

我有一个问题,现在一整天都找不到解决方案。我是 iPhone SDK 的新手,所以我想我只是错过了一些东西。

我的应用由一个 TabbedNavigation 组成,具有三个 ViewController。一切都按预期工作。现在,当用户单击按钮(而不是选项卡按钮...)时,我想打开一个新视图(最好从 NIB 中)。按钮的操作方法按预期调用。但是,我没有加载新的(表格)视图。

我试着给你一些代码来解释我的情况:

首先,在我的应用程序委托的 didFinishLaunchingWithOptions 中,我加载了 tabBarController 的视图(TabBarController 是委托的属性):

 // Add the tab bar controller's view to the window and display.
[window addSubview:tabBarController.view];
[window makeKeyAndVisible];

正如预期的那样,当应用程序启动时,TabController 的第一个 ViewController 会显示。这个 viewController 有它的自定义 ViewController 类,按钮的动作方法位于其中。我的操作方法如下所示:

-(IBAction)filtersButtonPressed:(id)sender {

  FiltersTableViewController *filtersViewController = 
    [[FiltersTableViewController alloc] initWithNibName:@"Filters" bundle:nil];

  [[[super tabBarController] navigationController] pushViewController:filtersViewController];
}

不知何故,这不起作用......我当然尝试了几件事 - 没有成功。

你们中有人能指出我正确的方向吗?只需按一下按钮即可获得新视图并没有那么难...

提前致谢!

雪儿,帕维

4

1 回答 1

0

建议您尝试将新的“过滤器”视图显示为模态视图控制器。尝试将您的代码更改为:

-(IBAction)filtersButtonPressed:(id)sender {

   FiltersTableViewController *filtersViewController = 
      [[FiltersTableViewController alloc] initWithNibName:@"Filters" bundle:nil];
[self presentModalViewController:filtersViewController animated:YES];

这将在当前视图的顶部向上滑动过滤器视图控制器(尽管您可以根据需要更改动画效果)。为了摆脱这种情况,当用户完成视图时,调用

[self dismissModalViewControllerAnimated:YES];

编辑: 如果您真的想使用导航控制器将视图推送到堆栈上,请使用

[self.navigationController pushViewController:filtersViewController];
于 2010-07-22T15:38:27.400 回答