1

嘿大家。我正在尝试将一个简单的 UINavigationController 合并到我的标签栏应用程序中。我将 TabBar 设置为根控制器,一切似乎都正常。此方法被正确调用并且不会中断,但它不会更改为我的详细视图。我完全迷失了这个。

我按照此视频中的说明进行操作:http ://www.youtube.com/watch?v=LBnPfAtswgw&feature=player_embedded# 。我改变了一些事情以使其与我想要完成的工作一起工作,但我留下的基本逻辑保持不变。她正在使用 SDK 2.*,而我正在使用 3.*。我认为这与它有关。谁能帮我吗?这就是我的 didSelectRowAtIndexPath 的样子:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // Navigation logic may go here. Create and push another view controller.
 NSInteger row = [indexPath row];
 if(self.detailViewController == nil) {
  LogEntryDetailViewController *logEntryDetail = [[LogEntryDetailViewController alloc]
              initWithNibName:@"LogEntryDetailView" bundle:[NSBundle mainBundle]];
  self.detailViewController = logEntryDetail;
  [logEntryDetail release];
 }

 detailViewController.title = [NSString stringWithFormat:@"%@", [logEntriesArray objectAtIndex:row]];

 ProgNameAppDelegate *delegate = (ProgNameAppDelegate *)[[UIApplication sharedApplication] delegate];
 [delegate.logViewNavController pushViewController:self.detailViewController animated:YES];
}

我要疯了。如果我需要将其发布到其他地方,我将很乐意这样做。提前致谢!

4

1 回答 1

1

您应该更改这些行:

ProgNameAppDelegate *delegate = (ProgNameAppDelegate *)[[UIApplication sharedApplication] delegate];
[delegate.logViewNavController pushViewController:self.detailViewController animated:YES];

有了这个:

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

如果您像您所说的那样有一个标签栏控制器,那么推动您可能是错误的做法(detailViewController取决于delegate.logViewNavController什么delegate.logViewNavController是......,但由于这对您不起作用,我敢打赌这就是您的困惑所在)。

通常,您不需要通过访问应用程序委托来获取这样的控制器来使代码复杂化。self.navigationController在大多数实际情况下,您需要做的就是推动您的新控制器。

于 2009-12-16T05:23:47.390 回答