Iphone:TabView + TableView

时间:2009-02-15 00:08:33

标签: iphone uitableview uitabbarcontroller datasource delegates

我认为我遗漏了一些简单的东西,但我无法确切地知道它是什么。

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

浏览器中的内容: 文件的所有者(类是我的自定义类,是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. 将头部或笔记本电脑靠在墙上直至其工作。
  3. 更新: 这是模拟器在连接Tableview的数据源并委托给文件所有者(他的类是我的自定义tableviewcontroller)时推送到控制台的错误。

      

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

4 个答案:

答案 0 :(得分:24)

我遇到了类似错误消息的类似问题。简单的解决方案是在IB中单击TabBarController中的View(灰色矩形,表示“从...加载的视图”),并将元素的类更改为我的TableViewController的类名。

答案 1 :(得分:2)

我遇到了同样的问题。 1.确保您的View实现了数据源方法 2.在IB中,将视图的类标识设置为实现数据源方法的类。 3.右键单击IB中的视图,检查数据源是否连接到文件所有者,而不是查看 Hooking up TableView in IB

答案 2 :(得分:1)

如果你不能在没有崩溃的情况下分配DataSource,那么这表明某些DataSource委托方法尚未实现。

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

答案 3 :(得分:0)

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

@interface MyClass:UIViewController <UITableViewDelegate,UITableViewDataSource>

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