【发布时间】:2012-06-13 03:08:55
【问题描述】:
我有一个关于为什么我的 UITableView 不会加载 detailView 的问题... 我以前用界面构建器做过,但现在我只是想纯粹地以编程方式来做。
在我的 tableView.h 中:
@property (strong, nonatomic) RLCASearchDetailViewControllerViewController *searchDetailViewController;
在我的 tableView.m 中:
@synthesize searchDetailViewController = _searchDetailViewController;
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (!self.searchDetailViewController)
{
self.searchDetailViewController = [[RLCASearchDetailViewControllerViewController alloc] initWithNibName:@"" bundle:nil];
}
SearchItem *item = [ content objectAtIndex:indexPath.row ];
[self.navigationController pushViewController:self.searchDetailViewController animated:YES];
self.searchDetailViewController.detailItem = item;
}
顺便说一句,我试过将 initWithNibName: 值设为 nil,空字符串如上,甚至 @"RLCASearchDetailViewControllerViewController"。没有任何效果...
在我的 RLCASearchDetailViewControllerViewController.h 中:
@interface RLCASearchDetailViewControllerViewController : UIViewController
{
SearchItem *detailItem;
}
@property (strong, nonatomic) id detailItem;
@end
在我的 RLCASearchDetailViewControllerViewController.m 中:
@synthesize detailItem = _detailItem;
- (void)setDetailItem:(SearchItem*)newDetailItem
{
NSLog( @"GETS HERE" );
if (_detailItem != newDetailItem) {
_detailItem = newDetailItem;
// Update the view.
[self configureView];
}
}
- (void)configureView
{
// Update the user interface for the detail item.
if (self.detailItem)
{
NSLog( @"GETS HERE" );
}
}
- (void)loadView
{
[super loadView];
// If you create your views manually, you MUST override this method and use it to create your views.
// If you use Interface Builder to create your views, then you must NOT override this method.
NSLog( @"DOES NOT GET HERE" );
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSLog( @"DOES NOT GET HERE" );
}
如上所见,当我实现了一些调试打印时......它在理论上做了它应该做的事情,但由于某种原因没有加载视图。当单击表格单元格时,当视图应更改为子视图时,这会在 GUI 中体现出来。
我做错了什么?请帮助...这让我发疯了,我已经在互联网上翻找了一段时间,希望得到答案。
非常感谢 - 我真的很感激! ;)
真诚地, 彼得。
【问题讨论】:
-
你的 didselectedrowatindexpath 方法调用了吗?
-
如果您纯粹以编程方式执行此操作,那么首先检查您的
didSelectRowAtIndexPath是否被调用?如果它没有被调用,那么Your_tableView.delegate = self;和Your_tableView.datasource = self;我不是在讽刺,但这是程序员从 IB 转向纯编程时最常见的忘记。 -
在推送详细视图时记录 self.navigationcontroller。如果为 nil,它将产生您所看到的症状。
-
是的,先生! NSLog(@"NAV: %@", self.navigationController);产生:资产净值:(空)。我能做些什么?看来快要解决了。谢谢! :)
标签: iphone objective-c uitableview uiviewcontroller detailview