我的主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'
答案 0 :(得分:2)
此日志消息:
[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance
意味着UITableView dataSource
方法被发送到UIViewController
的实例,而不是您的子类的实例。你是如何初始化VC的?如果你是在XIB中初始化它,你是否正确地将VC的类设置为你的子类?