我按照此视频中的说明操作: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];
}
我在这里疯了。如果我需要在其他地方发布,我将很乐意这样做。提前谢谢!
答案 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
。