为什么我的UITableView无法加载detailView? - 不调用loadView和viewDidLoad

时间:2012-06-09 07:44:32

标签: iphone objective-c uitableview uiviewcontroller detailview

我有一个问题,为什么我的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中没有任何事情发生。

我做错了什么?请帮忙......这让我发疯了,而且我现在已经在整个互联网上翻找了一段时间,希望得到答案。

非常感谢 - 我真的很感激! ;)

此致 彼得。

2 个答案:

答案 0 :(得分:0)

如果您没有使用笔尖,请更改以下代码行:

self.searchDetailViewController = [[RLCASearchDetailViewControllerViewController alloc] initWithNibName:@"" bundle:nil];

self.searchDetailViewController = [[RLCASearchDetailViewControllerViewController alloc] init];

希望它有所帮助!

答案 1 :(得分:0)

您的表格视图未嵌入导航控制器中,因此无法推送新的视图控制器。

由于详细视图控制器永远不会显示在屏幕上,因此它从不会加载其视图,这就是您从loadView或viewDidLoad方法中看不到任何内容的原因。

您没有显示如何为您的应用设置初始视图控制器,但它应该是导航控制器,您的表视图控制器作为根视图控制器。

如果您是初学者,使用故事板比尝试在代码中完成所有操作要好得多。避免界面构建器几乎没有什么好处和许多缺点。