我现在已经做了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];
}
答案 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;