UITableView (IBOutlet) 在初始数据加载后变为空

Posted

技术标签:

【中文标题】UITableView (IBOutlet) 在初始数据加载后变为空【英文标题】:UITableView (IBOutlet) becomes null after initial data loaded 【发布时间】:2013-04-13 22:47:17 【问题描述】:

这让我发疯 - 我有一个带有 @property picTable 的 ParentViewController 类(没有 xib),然后是带有 xib 和 File's Owner 的 picTable 部分的 ChildViewController(ParentViewController 的子类)。

我注意到了这个问题,因为我需要从 URLRequest 添加更多数据 - 我在 NSArray 中有数据,但调用 reloadData 什么也没做 - 断点显示 self.picTable 为空 - 但它肯定是链接的(通过断点检查)视图生命周期的早期阶段。

我尝试使用 NSNotificationCenter、调度队列和 [self performSelectorOnMainThread... 都无济于事 - 我的 refreshTableView 总是被调用,但断点显示表视图为空。

试过了——

@property (nonatomic, strong) IBOutlet UITableView *picTable;

还有——

@property(非原子,保留)IBOutlet UITableView *picTable;

两个类的链接:

家长: https://github.com/gileze33/Ticklr/blob/master/Ticklr/GWTPicPresentingViewController.h https://github.com/gileze33/Ticklr/blob/master/Ticklr/GWTPicPresentingViewController.m

子类: https://github.com/gileze33/Ticklr/blob/master/Ticklr/GWTPicViewController.h https://github.com/gileze33/Ticklr/blob/master/Ticklr/GWTPicViewController.m

【问题讨论】:

你应该发布你提到的两个类的源代码 刚刚在 GitHub 上添加了指向源代码的链接 只是为了确认 - 似乎所有 UI 元素都在 viewDidLoad 之后立即被释放.. 【参考方案1】:

即使您从子类调用 [super initWithNibNamed...],我仍然怀疑 nib 是否将 tableview 连接到超类。即使在超类中定义 tableView 属性对您的设计很重要,也请尝试将 tableView 属性向下移动到子类中,然后看看它是否有效。

【讨论】:

我实际上只是设法解决了这个问题——这是因为我在 initWithNib 而不是 viewDidLoad 中启动了我的模型获取器——一定是在某种程度上引用了我的视图控制器的不同实例作为委托跨度>

以上是关于UITableView (IBOutlet) 在初始数据加载后变为空的主要内容,如果未能解决你的问题,请参考以下文章

将情节提要的 UITableView 连接到 .m UIViewController 作为 IBOutlet

重用带有通过 IBOutlet 连接到超类的 uitableview 的 xib:如何更好地为某些子类添加带有按钮的工具栏?

强 vs 弱 - 如何定义可能连接或不连接到 IBOutlet 的属性?

无法连接 UITableViewCell 自定义单元格 IBOutlet

在情节提要中使用自定义 tableviewcells 时,IBOutlet 为零

未加载 CollectionView 单元格的 UIImageView IBOutlet 属性