如果我设置tableview

时间:2016-01-30 15:37:28

标签: ios xcode swift uitableview

您好我在我的应用(故事板)中添加了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

我希望你知道如何解决这个问题。

4 个答案:

答案 0 :(得分:0)

  • 这不是数据源的错误&amp;代表,检查插座 imgTeam1已连接正确。
  • StoryBoard中自定义单元格中的出口必须连接到自定义 单元类属性
  • 要添加的一件事,而不是设置数据源&amp;代表团 代码在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的连接。也可以通过控制从连接检查器拖动到橙色视图控制器,使用故事板设置委托/数据存储。

connections-inspector