子类化时重新加载 tableView 导致崩溃

发布于 2024-09-25 15:00:33 字数 1470 浏览 7 评论 0原文

嘿伙计们!我在重新加载我的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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

三生路 2024-10-02 15:00:33

我不确定这是否能解决您的问题,但不要在其 init 方法中创建视图控制器的视图。相反,重写 loadView 并在该方法中创建表视图。并且不仅将表分配给 tableView 属性,而且还分配给视图控制器的 view 属性。

有关更多信息,请参阅 loadViewviewDidLoad 的文档。

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 the tableView property but also to the view controller's view property.

See the documentation for loadView and viewDidLoad for more info.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文