xib中的tableView没有在关联的视图控制器中拾取数据源委托方法

时间:2011-08-15 08:23:37

标签: iphone uikit

我的主xib文件有一个标签栏控制器,每个标签都链接到不同的xib。

其中一个标签是导航控制器,其视图控制器按照answer链接到xib。

当我运行应用程序时,我收到以下错误。就好像它甚至没有在视图控制器中查找这些方法。

我尝试了一切,包括使用不同的xib,检查界面构建器中的链接,即tableview的委托和数据源。我已经在vc中实现了所需的协议方法,例如numberofrowsinsection。

一旦删除了xib中的数据源链接,错误就会消失。

编辑:当我将这个视图控制器的视图添加到主窗口(只是为了测试)时,tableview加载没有问题。所以它似乎只有在我将它用作导航控制器和标签控制器的一部分时才会发生。

  

由于未捕获的异常而终止应用   'NSInvalidArgumentException',原因:' - [UIViewController   tableView:numberOfRowsInSection:]:发送到的无法识别的选择器   实例0x6120ae0'    * 在第一次投掷时调用堆栈:(0 CoreFoundation
  0x00dc45a9 exceptionPreprocess + 185 1 libobjc.A.dylib
  0x00f18313 objc_exception_throw + 44 2 CoreFoundation
  0x00dc60bb - [NSObject(NSObject)doesNotRecognizeSelector:] + 187 3
  CoreFoundation 0x00d35966 __ 转发
+ 966     4 CoreFoundation 0x00d35522   _CF_forwarding_prep_0 + 50 5 UIKit
  0x001d32b7 - [UISectionRowData   refreshWithSection:tableView:tableViewRowData:] + 1834 6 UIKit
  0x001d0d88 - [UITableViewRowData numberOfRows] + 108 7 UIKit
  0x00084677 - [UITableView noteNumberOfRowsChanged] + 132 8 UIKit
  0x00091708 - [UITableView reloadData] + 773 9 UIKit
  0x0008e844 - [UITableView layoutSubviews] + 42 10 QuartzCore
  0x016aea5a - [CALayer layoutSublayers] + 181 11 QuartzCore
  0x016b0ddc CALayerLayoutIfNeeded + 220 12 QuartzCore
  0x016560b4 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 310     13 QuartzCore 0x01657294   _ZN2CA11Transaction6commitEv + 292 14 QuartzCore
  0x0165746d   _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 99     15 CoreFoundation 0x00da589b   的 CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION + 27 16   CoreFoundation 0x00d3a6e7 __CFRunLoopDoObservers   + 295 17 CoreFoundation 0x00d031d7   __CFRunLoopRun + 1575 18 CoreFoundation
  0x00d02840 CFRunLoopRunSpecific + 208 19 CoreFoundation
  0x00d02761 CFRunLoopRunInMode + 97 20图形服务
  0x00ffc1c4 GSEventRunModal + 217 21 GraphicsServices
  0x00ffc289 GSEventRun + 115 22 UIKit
  0x00024c93 UIApplicationMain + 1160 23 MyPractice
  0x00002339 main + 121 24 MyPractice
  0x000022b5 start + 53)在抛出一个实例后终止调用   'NSException'

1 个答案:

答案 0 :(得分:2)

此日志消息:

[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 

意味着UITableView dataSource方法被发送到UIViewController的实例,而不是您的子类的实例。你是如何初始化VC的?如果你是在XIB中初始化它,你是否正确地将VC的类设置为你的子类?