0

我的项目中有一个标签栏,每个标签栏都有一个表格视图。单击表格视图中的一行时,我想打开一个详细信息屏幕,如下所示。但什么也没有发生。我在哪里做错了。我应该如何建立一个逻辑。

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
DetailScreen *detail = [[DetailScreen alloc] initWithNibName:@"DetailScreen" bundle:nil];
 [self.navigationController pushViewController:detail animated:YES];
[detail release];

}

4

6 回答 6

2

单击单元格时没有发生任何事情的原因有很多。

  • 在这个方法中设置一个断点。它甚至被调用了吗?
  • App在断点处停止po detail后,初始化实例后进入控制台类型。确保它不是(空)
  • 还可以尝试键入po [self navigationController]以检查导航控制器是否存在。

您可能没有导航控制器。你是如何创建标签栏控制器的?在界面生成器中还是通过 AppDelegatedidFinishLaunchingWithOptions:方法中的代码?

你做过吗?

    YourViewController *yourVC = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil];

    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:yourVC];

    self.tabBarController.viewControllers = [NSArray arrayWithObjects:navigationController, nil];
于 2012-09-06T08:45:35.653 回答
1

尝试这个,

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
     DetailScreen *detail = [[DetailScreen alloc] init];
     [self.navigationController pushViewController:detail animated:YES];
     [detail release];
}
于 2012-09-06T13:12:48.477 回答
1

我猜你没有导航控制器所以

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

不管用。

利用

[self.view addSubview:detail.view]

或者

[self presentModalViewController:detail animated:YES];

反而

于 2012-09-06T13:31:12.490 回答
0

将您的视图控制器(包含控制器的表视图)添加到导航控制器中,然后开始使用

DetailScreen *detail = [[DetailScreen alloc] initWithNibName:@"DetailScreen" bundle:nil];
    [self.navigationController pushViewController:detail animated:YES];
于 2012-09-06T10:52:28.517 回答
0

如果您的项目是基于UITabBarViewController的应用程序,我认为您不能使用 pushViewController 导航到另一个视图,除非您的项目中有navigationController

于 2012-09-06T08:44:15.753 回答
-2
[self.navigationController pushViewController:detail animated:YES];

而是将您的详细推送代码移动到另一个方法并调用:

[self performSelector:@selector(myMethod:) withObject:nil]
于 2012-09-06T08:40:03.957 回答