【问题标题】:tableView in UITableViewController is nil after init初始化后 UITableViewController 中的 tableView 为 nil
【发布时间】:2012-09-19 19:44:36
【问题描述】:

我在 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

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

【问题讨论】:

    标签: iphone objective-c ios cocoa-touch


    【解决方案1】:

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

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

    【讨论】:

    • 这就是我的想法。我不明白为什么这突然停止在 iOS 6 中工作?还是偶然发生的事情?
    • @Rafał 我怀疑在 iOS 6 之前,tableView 是在 getter 中延迟加载的,但现在它在 loadView 中加载。 (我怀疑你可以通过在self.tableView.backgroundView = bck; 之前调用self.view; 来强制tableView 加载。但不要这样做,以正确的方式进行并使用viewDidLoad。)
    【解决方案2】:

    好的,我已经解决了:

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

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

    【讨论】:

    • 就是这样。当我使用“New File -> Cocoa Touch Class”创建 xib 时,它发生了。
    猜你喜欢
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多