【问题标题】:-didSelectRowAtIndexPath not working for me. iPhone SDK 3-didSelectRowAtIndexPath 不适合我。 iPhone SDK 3
【发布时间】:2009-12-16 03:44:11
【问题描述】:

大家好。我正在尝试将一个简单的 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];
}

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

【问题讨论】:

  • 导航控制器的根控制器是什么?
  • 对我来说看起来不错,尽管从那里获取应用程序委托并获取导航控制器有点奇怪并且可能是问题所在(我必须查看更多代码才能确定)。您可能可以摆脱 [self.navigationController pushViewController:...]
  • 我是 iPhone SDK 的新手,所以我不完全确定您在问 Anurag 什么。请解释一下,以便我能正确回答。我将在下面回答bpapa的问题。

标签: iphone sdk didselectrowatindexpath


【解决方案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

【讨论】:

  • 我替换了这些行,现在收到此“错误:请求成员 'logViewNavController' 不是结构或联合。这就是我打电话给代表的原因。还有更多想法吗?再次感谢!
  • 我收回了。我没有正确输入您建议的代码。现在可以了!非常感谢!
猜你喜欢
  • 1970-01-01
  • 2017-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 2017-03-22
相关资源
最近更新 更多