子类化时重新加载 tableView 导致崩溃
嘿伙计们!我在重新加载我的tableView时遇到一些问题。 我有一个名为 RadioTable 的类,对我的 tableView 进行了子类化。我还对 TableViewCells 进行了子类化,但这在这里并不重要。
我需要指出,我是个新手,并且根据一些教程和内容构建了我的子类。
首先,这是我尝试重新加载数据时收到的错误消息。 我正在使用 [self.tableView reloadData] 重新加载它。
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UITableViewController loadView] loaded the "MainView" nib but didn't get a UITableView.'
好的,那么问题就很清楚了。视图(我的 nib 文件)没有任何连接到文件所有者的 tableView。这就是我试图解决的问题。我尝试在子类中添加 IBOutlet,并在那里设置 tableView 属性。
(我的 tableView 子类是从 UITableView 继承的,这样就很清楚了)
这是我的初始化代码:
- (id)initWithStyle:(UITableViewStyle)style {
if ((self = [super initWithStyle:style])){
RadioTable *aTableView = [[RadioTable alloc] initWithFrame:self.tableView.frame style:style];
[aTableView setDelegate:self];
[aTableView setDataSource:self];
[aTableView setSwipeDelegate:self];
[aTableView setRowHeight:54];
[self setTableView:aTableView];
[self.tableView setScrollEnabled:NO];
[self.tableView setRowHeight:80];
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleSingleLine];
[self.tableView setSeparatorColor:[UIColor lightGrayColor]];
[aTableView release];
}
return self;
}
当我启动应用程序时,tableView 工作正常,它工作 >完美。但是当我尝试重新加载它时,问题就出现了。
Hey guys! I have some problems reloading my tableView.
I have subclasses my tableView, with a class called RadioTable. I have also subclasses my TableViewCells, but thats not important here.
I need to point out that i'm pretty new, and built my subclass from some tutorials and stuff.
First of all, here is the error message i'm getting when i try to reload my data.
I am reloading it with [self.tableView reloadData].
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UITableViewController loadView] loaded the "MainView" nib but didn't get a UITableView.'
Okay, so the problem is pretty clear. The view(my nib-file) does not have any tableView's connected to the Files Owner. And thats what i tried to solve. I tried to add a IBOutlet in my subclass, and setting the tableView-property there.
(My tableView-subclass is inherited from UITableView, just so thats clear)
Here is my init-code:
- (id)initWithStyle:(UITableViewStyle)style {
if ((self = [super initWithStyle:style])){
RadioTable *aTableView = [[RadioTable alloc] initWithFrame:self.tableView.frame style:style];
[aTableView setDelegate:self];
[aTableView setDataSource:self];
[aTableView setSwipeDelegate:self];
[aTableView setRowHeight:54];
[self setTableView:aTableView];
[self.tableView setScrollEnabled:NO];
[self.tableView setRowHeight:80];
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleSingleLine];
[self.tableView setSeparatorColor:[UIColor lightGrayColor]];
[aTableView release];
}
return self;
}
The tableView works fine when i launch the app, it works perfect. But the problem occours when i try to reload it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不确定这是否能解决您的问题,但不要在其 init 方法中创建视图控制器的视图。相反,重写
loadView
并在该方法中创建表视图。并且不仅将表分配给tableView
属性,而且还分配给视图控制器的view
属性。有关更多信息,请参阅
loadView
和viewDidLoad
的文档。I'm not sure if this will solve your problem, but don't create your view controller's view in its init method. Instead, override
loadView
and create the table view in that method. And assign the table not only to thetableView
property but also to the view controller'sview
property.See the documentation for
loadView
andviewDidLoad
for more info.