我在UITableViewController的子类中有以下代码。在iOS 5.1下,它可以正常工作,但是在iOS 6下,self.tableView为nil(在模拟器和真实设备上)。我做错了吗?为什么在初始化后没有立即设置视图?

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];

    if (self)
    {
        UIView * bck = [[UIView alloc] init];
        [bck setBackgroundColor:[UIColor whiteColor]];
        self.tableView.backgroundView = bck;
        [bck release];
    }

    return self;
}

编辑:

我已经解决了这个问题:

我上课了
AccountsListViewController_iPad

这是的子类
AccountsListViewController : UITableViewController

AccountsListViewController在初始化后加载了tableView和视图(正如我期望的那样)。另一方面,AccountsListViewController_iPad的view和tableView等于nil。我已经从AccountsListViewController_iPad中删除了所有内容,现在看起来如下:
.h
#import <UIKit/UIKit.h>
#import "AccountsListViewController.h"
@interface AccountsListViewController_iPad : AccountsListViewController
@end

.m
#import "AccountsListViewController_iPad.h"
@implementation AccountsListViewController_iPad
@end

而且它的观点仍然是零。在我看来,它的行为应与其父类完全相同,但事实并非如此。

最佳答案

我怀疑这是因为在加载表视图之前不会加载该表视图。您应该将视图设置移动到viewDidLoad

您应该在init方法中设置的唯一“视图”属性是.navigationItem(尽管我认为UINavigationItem可能最适合视为控制器而不是视图的一部分)。

07-26 09:38