UITableviewController丢失对tableview的引用

时间:2011-08-06 15:13:43

标签: iphone ipad uitableview reference

我现在已经做了2天了,似乎无法掌握。我猜错了一些非常基本的东西。

这就是我所拥有的:

UIViewController作为Apps根控制器。 有一个ContainerView,UIView的子类,我添加到我的根控制器视图中。 在其中,我想要一个UITableView。

由于有几个不同的容器,我每个都有不同的Nib。

Heres如何连线:带内容的笔尖,将容器作为其文件的所有者。 UITableView有一个出口,它有容器作为源和委托。

容器实现协议方法。

现在我无法在UITableView上调用reloaddata,因为它是零。我在consolo中键入po,它说0x0但我不知道为什么。

我一直在尝试不同的方法,但最终都失去了对tableView的引用。

这不是我创建的第一个桌面视图,但我不知道我在这里做错了什么。

任何帮助请!!!!

代码:

这是我的奥特莱斯:

IBOutlet UITableView *contactsTV;

文件的所有者与它有连接,而tableview反之亦然。

我通过执行以下操作来创建笔尖:

    Contentview *v = [[Contentview alloc] initWithFrame:[[contentViewArray objectAtIndex:i] CGRectValue]];

而contentViewArray是一些将Framevalues存储为字符串的数组。 然后我做:

[v prepareView];

它看起来像这样:

- (void) prepareView {

NSArray *mediaPlayerViews = [[NSBundle mainBundle] loadNibNamed:@"MyView" 
                                                          owner:self 
                                                        options:nil];

UIView *v = (UIView *)[mediaPlayerViews objectAtIndex:0];
[self addSubview:v];
}

3 个答案:

答案 0 :(得分:2)

刚刚遇到类似问题 - 所有内容都显示正确连线(Xcode 4),但出口参考是零。

当我创建文件时,我使用了“新文件” - > UITableViewController的子类。使用NIB(自动)进程来设置文件。这导致控制器被声明为UITableViewController,而NIB有一个UITableView作为它的根。

尽管TableDataSource和TableDelegate方法按预期调用,但是在加载nib时,从未设置TableView的出口。

为了解决这个问题,我基本上不得不将控制器从UITableViewController的子类更改为UIViewController并相应地设置NIB:我清除了NIB,添加了一个带有UITableView的UIView作为孩子,重新连接了出口(View, TableView,TableDataSource和TableDelegate),它们都按计划工作。

我认为在使用NIB创建UITableView的子类时,这可能是XCode的一个错误。

答案 1 :(得分:0)

将其设为UITableViewController它应该有效。

答案 2 :(得分:0)

您是否在头文件中设置了属性

IBOutlet UITableView *contactsTV

如果您的联系人电视没有setter方法,则您的对象不会保留您的contactsTV。

尝试用

替换您的代码
//header file
UITableView *contactsTV;
@property(nonatomic, retain) IBOutlet UITableView *contactsTV;

//implementation file
@synthesize contactsTV;