-didSelectRowAtIndexPath不适合我。 iPhone SDK 3

时间:2009-12-16 03:44:11

标签: iphone sdk didselectrowatindexpath

嘿大家好我试图将一个简单的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];
}

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

1 个答案:

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