我在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
可能最适合视为控制器而不是视图的一部分)。