您好我在我的应用(故事板)中添加了UITableView
个自定义单元格。
现在我想以编程方式添加委托和数据源。如果在viewDidLoad
中添加此代码,应用程序崩溃。
tableView.delegate = self
tableView.dataSource = self
错误:
2016-01-30 16:39:29.283 App[4068:880212] Unknown class TableCell in Interface Builder file.
2016-01-30 16:39:29.289 App[4068:880212] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UITableViewCell 0x7fa3a356bb10> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key imgTeam1.'
*** First throw call stack:
(
0 CoreFoundation 0x0000000105302e65 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x0000000107042deb objc_exception_throw + 48
2 CoreFoundation 0x0000000105302aa9 -[NSException raise] + 9
3 Foundation 0x00000001056cb9bb -[NSObject(NSKeyValueCoding) setValue:forKey:] + 288
4 UIKit 0x0000000105bd5fd9 -[UIView(CALayerDelegate) setValue:forKey:] + 173
5 UIKit 0x0000000105edcf41 -[UIRuntimeOutletConnection connect] + 109
6 CoreFoundation 0x00000001052434a0 -[NSArray makeObjectsPerformSelector:] + 224
7 UIKit 0x0000000105edb924 -[UINib instantiateWithOwner:options:] + 1864
8 UIKit 0x0000000105c654f7 -[UITableView _dequeueReusableViewOfType:withIdentifier:] + 428
9 App 0x0000000105112cd9 _TFC6App14ViewController9tableViewfS0_FTCSo11UITableView21cellForRowAtIndexPathCSo11NSIndexPath_CSo15UITableViewCell + 233
10 App 0x00000001051134ff _TToFC6App14ViewController9tableViewfS0_FTCSo11UITableView21cellForRowAtIndexPathCSo11NSIndexPath_CSo15UITableViewCell + 79
11 UIKit 0x0000000105c78e43 -[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] + 766
12 UIKit 0x0000000105c78f7b -[UITableView _createPreparedCellForGlobalRow:willDisplay:] + 74
13 UIKit 0x0000000105c4da39 -[UITableView _updateVisibleCellsNow:isRecursive:] + 2996
14 UIKit 0x0000000105c8201c -[UITableView _performWithCachedTraitCollection:] + 92
15 UIKit 0x0000000105c68edc -[UITableView layoutSubviews] + 224
16 UIKit 0x0000000105bd64a3 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 703
17 QuartzCore 0x000000010a08859a -[CALayer layoutSublayers] + 146
18 QuartzCore 0x000000010a07ce70 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 366
19 QuartzCore 0x000000010a07ccee _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24
20 QuartzCore 0x000000010a071475 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 277
21 QuartzCore 0x000000010a09ec0a _ZN2CA11Transaction6commitEv + 486
22 QuartzCore 0x000000010a09f37c _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 92
23 CoreFoundation 0x000000010522e367 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
24 CoreFoundation 0x000000010522e2d7 __CFRunLoopDoObservers + 391
25 CoreFoundation 0x000000010522384c CFRunLoopRunSpecific + 524
26 UIKit 0x0000000105b1a7cd -[UIApplication _run] + 402
27 UIKit 0x0000000105b1f610 UIApplicationMain + 171
28 App 0x000000010511567d main + 109
29 libdyld.dylib 0x0000000107b4b92d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
我希望你知道如何解决这个问题。
答案 0 :(得分:0)
imgTeam1
已连接正确。StoryBoard
中自定义单元格中的出口必须连接到自定义
单元类属性StoryBoard
。答案 1 :(得分:0)
显然您删除了@IBOutlet weak var imgTeam1: UIImageView!
(或重命名)但仍在界面构建器中连接。您需要再次添加该属性或从视图中删除它。
答案 2 :(得分:0)
您可能会删除或错过与xib
的委托imgTeam1的连接答案 3 :(得分:0)
到目前为止给出的答案是正确的。这个简单地说明了如何采取纠正措施。您需要在故事板上为发生错误的类选择橙色控制器。然后选择连接检查器。找到错误行中提到的密钥:
2016-01-30 16:39:29.289 App[4068:880212] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UITableViewCell 0x7fa3a356bb10> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key imgTeam1.'
然后单击错误消息中提到的密钥旁边的x
。这将清除错误。
如果您想确定没有关于TableView委托和数据存储区的任何进一步错误消息,只需验证它们是否已在连接检查器上建立连接。如果委托/数据存储已在故事板上具有连接,则您不需要在代码中添加连接。
仅供参考,如果您使用UITableViewController,那么您将自动设置委托/数据存储区和tableView连接,而无需在代码中添加任何内容。如果您使用带有手动添加的tableView的UIViewController,则需要手动设置tableView,delegate和datastore的连接。也可以通过控制从连接检查器拖动到橙色视图控制器,使用故事板设置委托/数据存储。