无法在工具上使用accessoryview,但在模拟器中可以

时间:2012-10-15 20:33:51

标签: objective-c ios uikit key-value-coding

我有一个包含两个动态原型单元格的表视图。使用performSegue显示tableview,它会对新的Navigation控制器进行模式显示。它在IOS 6.0模拟器上运行良好,但在IOS 5.1设备上运行不正常(我使用的是6.0 SDK,但目标是5.1平台)。

我无法让配件视图正常工作 - 两个问题

  1. 如果我将公开附件视图添加到动态表格单元原型并使用- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath tableview委托方法,则永远不会调用它。这已被其他地方提出但尚无答案。
  2. 或者,如果我使用故事板编辑器触发来自公开配件视图的segue,它在模拟器上工作正常,但在我尝试使可重复使用的单元出列时在设备上崩溃。崩溃堆栈转储

    2012-10-15 21:09:07.744 mainapp[338:707] CRASH: [<DateCell 0x1e5b30> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key accessoryActionSegueTemplate.
    
    2012-10-15 21:09:07.771 mainapp[338:707] Stack Trace: (
    0   CoreFoundation                      0x373cd8a7 __exceptionPreprocess + 186
    1   libobjc.A.dylib                     0x350d2259 objc_exception_throw + 32
    2   CoreFoundation                      0x373cd5c5 -[NSException init] + 0
    3   Foundation                          0x37bcc323 _NSSetUsingKeyValueSetter + 130
    4   Foundation                          0x37bcbe23 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 23
    5   UIKit                               0x31263965 -[UIView(CALayerDelegate) setValue:forKey:] + 156
    6   Foundation                          0x37ba5f09 -[NSObject(NSKeyValueCoding) setValue:forKeyPath:] + 132
    7   CoreFoundation                      0x3732c7d3 -[NSObject performSelector:] + 38
    8   CoreFoundation                      0x3732d461 -[NSArray makeObjectsPerformSelector:] + 152
    9   UIKit                               0x313190c3 -[UINib instantiateWithOwner:options:] + 918
    10  UIKit                               0x311027bd -[UITableView dequeueReusableCellWithIdentifier:] + 304
    11  mainapp                             0x0005b769 -[SetupViewController tableView:cellForRowAtIndexPath:] + 80
    12  UIKit                               0x31101efb -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 546
    13  UIKit                               0x31100fd9 -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 1076
    14  UIKit                               0x31100763 -[UITableView layoutSubviews] + 206
    15  UIKit                               0x310a4f15 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 148
    16  CoreFoundation                      0x3732c1fb -[NSObject performSelector:withObject:] + 42
    17  QuartzCore                          0x374f1aa5 -[CALayer layoutSublayers] + 216
    18  QuartzCore                          0x374f16bd _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 216
    19  QuartzCore                          0x374f5843 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 226
    20  QuartzCore                          0x374f557f _ZN2CA11Transaction6commitEv + 314
    21  QuartzCore                          0x374ed4b9 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 56
    22  CoreFoundation                      0x373a1b1b __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 18
    23  CoreFoundation                      0x3739fd57 __CFRunLoopDoObservers + 258
    24  CoreFoundation                      0x373a00b1 __CFRunLoopRun + 760
    25  CoreFoundation                      0x373234a5 CFRunLoopRunSpecific + 300
    26  CoreFoundation                      0x3732336d CFRunLoopRunInMode + 104
    27  GraphicsServices                    0x33ae2439 GSEventRunModal + 136
    28  UIKit                               0x310cfcd5 UIApplicationMain + 1080
    29  mainapp                             0x000566ad main + 96
    30  mainapp                             0x00056648 start + 4
    )
    
  3. 我尝试删除并重新创建故事板中的场景,认为它们可能已经损坏,但没有快乐。我们将非常感激地收到任何建议。

    由于

    安德鲁

1 个答案:

答案 0 :(得分:0)

通常在我收到错误时

    this class is not key value coding-compliant for the key 

这意味着在故事板中没有连接的东西。

例如,以前使用的属性名称仍然连接到故事板中的元素。

解决这个问题的方法是在故事板中将控件从控制器转移到控制器(缩小以便它不会连接到特定事件)并实现:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

检查选择的单元格并使用

      [self performSegueWithIdentifier:@"yourIdentifier"];

希望它有所帮助,祝你好运。