2

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

- (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

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

4

2 回答 2

3

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

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

于 2012-09-18T11:01:12.563 回答
2

好的,我已经解决了:

有 AccountsListViewController_iPad 类和关联的 AccountsListViewController_iPad.xib 文件。Xib,尽管没有在代码中的任何地方加载,并且 xib 中的文件所有者不是 AccountsListViewController_iPad,但仍在加载。由于某种原因,xib 中的表视图在文件所有者(不存在)中设置为属性“表”,因此视图和表视图为零。

我仍然不知道为什么加载 xib 或为什么在 iOS 5.x 下存在问题

于 2012-09-19T11:44:36.517 回答