0

2 つの動的プロトタイプ セルを含むテーブル ビューがあります。performSegueテーブルビューは、新しいナビゲーション コントローラーのモーダル表示を行うものを使用して表示されます。IOS 6.0 シミュレーターでは正常に動作しますが、IOS 5.1 デバイスでは動作しません (私は 6.0 SDK を使用していますが、5.1 プラットフォームをターゲットにしています)。

アクセサリ ビューが正しく機能しない - 2 つの問題

  1. 開示アクセサリ ビューを動的テーブル セル プロトタイプに追加し、- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPathtableview デリゲート メソッドを使用すると、呼び出されません。これは他の場所で尋ねられましたが、まだ回答がありません。
  2. または、ストーリーボード エディターを使用してディスクロージャー アクセサリ ビューからセグエをトリガーすると、シミュレーターでは正常に動作しますが、再利用可能なセルをデキューしようとするとデバイスでクラッシュします。以下のクラッシュ スタックダンプ

    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
    )
    

ストーリーボードのシーンが破損した可能性があると考えて、シーンを削除して再作成しようとしましたが、喜びはありません。どんな提案もありがたく受け取られます。

ありがとう

アンドリュー

4

1 に答える 1

0

通常、エラーが発生したとき

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

これは、ストーリーボードに何かが正しく接続されていないことを意味します。

たとえば、以前に使用されたプロパティ名は、ストーリーボード内の要素にまだ接続されています。

これを回避するには、ストーリーボードでコントローラーからコントローラーへのセグエを作成し (ズームアウトして、特定のイベントに接続しないようにします)、以下を実装します。

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

どのセルが選択されているかを確認して使用する

      [self performSegueWithIdentifier:@"yourIdentifier"];

それが役に立てば幸いです、頑張ってください。

于 2012-10-16T01:32:49.883 に答える