iPhone SDK问题:在TabBarController视图中加载表视图

时间:2010-07-22 15:32:13

标签: iphone uitableview sdk uiviewcontroller uitabcontroller

我遇到了问题,现在无法找到解决方案。我是iPhone SDK的新手,所以我想我只是遗漏了一些东西。

我的应用程序包含一个TabbedNavigation,有三个ViewControllers。一切都按预期工作。现在我想在用户选中一个按钮(而不是标签按钮......)时打开一个新视图(最好是从NIB开始)。按钮的action方法按预期调用。但是,我没有加载新的(table-)视图。

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

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

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

当应用程序是startet时,TabController的第一个ViewController会按预期显示。这个viewController有自定义的ViewController类,按钮的action方法就在这个类中。我的动作方法如下:

-(IBAction)filtersButtonPressed:(id)sender {

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

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

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

你们有人可以指出我正确的方向吗?只需按一下按钮就可以获得新视图......

提前致谢!

Chers,pawi

1 个答案:

答案 0 :(得分: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];