UITableViewControllerのサブクラスに次のコードがあります。iOS 5.1では正常に動作しますが、iOS 6ではself.tableViewはnilです(シミュレーターと実際のデバイスの両方で)。私はそれを間違っていますか?initの直後にビューが設定されないのはなぜですか?
- (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とviewがロードされます(予想どおり)。一方、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
それでも、ビューはゼロです。私の意見では、スーパークラスとまったく同じように動作するはずですが、そうではありません。