7

我想我错过了一些简单的东西,但我无法弄清楚它到底是什么。

我正在尝试使用 设置一个应用程序UITabViewController,其中一个选项卡将有一个 UITableView 和 UISearchBar (但没有导航控制器)。我在界面生成器中设置了UITabViewController所有选项卡,并且视图位于它们自己的 xib 文件中。带有 的选项卡的 xib 文件UITableView设置和连接如下。

浏览器中的内容:文件的所有者(类是我的自定义类,它是 UITableViewController 的子类)视图 -> 视图

View (class UIView, reference view -> File's owner) contains:
      UITableView (if i try and set references to the data source / delegate, the app breaks)
      UISearchBar (unconfigured at the moment)

此设置显示所有项目并且不会锁定,但是当我尝试使用 UITableView 加载选项卡时,我无法分配 DataSource 而不会崩溃。我应该怎么做才能将数据输入到这个表中,无论是在 IB 还是代码中?我的想法如下:

  1. 实现自定义 UITableView 类,连接到 IB 中的表视图或 Xcode 中的自定义 tableviewcontroller。
  2. 将头或笔记本电脑靠在墙上,直到它起作用。

更新:这是当我连接 Tableview 的数据源并委托给文件所有者(谁的类是我的自定义 tableviewcontroller)时模拟器推送到控制台的错误。

2/14/09 6:59:12 PM TabBarWillbeRight[33172] * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[UIViewController tableView:numberOfRowsInSection:]: 无法识别的选择器发送到实例 0x523760

4

4 回答 4

24

我有一个带有相同错误消息的类似问题。简单的解决方案是在 IB 中单击 TabBarController 中的视图(显示“视图加载自..”的灰色矩形)并将元素的类更改为我的 TableViewController 的类名。

于 2010-01-22T08:52:06.090 回答
2

我有同样的问题。1. 确保您的视图实现数据源方法 2. 在 IB 中,将视图的类标识设置为实现数据源方法的类。3. 右键单击​​ IB 中的视图并检查数据源是否连接到Files Owner,而不是View 在 IB 中连接 TableView

于 2011-05-15T15:43:16.600 回答
1

如果您无法在不崩溃的情况下分配 DataSource,则表明某些 DataSource 委托方法尚未实现。

特别是您分配为数据源的类应该实现 UITableViewDataSource

于 2009-02-15T00:12:08.410 回答
0

你确定你的类实现了 UITableViewDelegate 和 UITableViewDataSource 类吗?还要检查您的视图控制器的声明。你的 .h 文件应该是这样的

@interface MyClass:UIViewController <UITableViewDelegate,UITableViewDataSource>

其他一切似乎都已到位。如果类声明没有指定它实现 UITableViewDelegate 和 DataSource,那么你一设置数据源就会得到异常。

于 2009-02-15T14:34:17.577 回答