1

UITableViewXCode4.6でiOS6.1SDKを使用してプロジェクトを作成し、ターゲットsdkを5.1に設定しました。アプリdequeueReusableCellWithIdentifiercellForRowAtIndexPath関数を呼び出すと、アプリは例外をスローし、シミュレーターは5.1、シミュレーター6.xは問題ありません。

1: [UITableView dequeueReusableCellWithIdentifier:forIndexPath:]:認識されないセレクターがインスタンスに送信されました

2:キャッチされなかった例外NSInvalidArgumentExceptionが原因でアプリが終了しました。理由:-[UITableView dequeueReusableCellWithIdentifier:forIndexPath:]:認識されないセレクターがインスタンスに送信されました

4

2 に答える 2

6

1.dequeueReusableHeaderFooterViewWithIdentifierの
可用性
iOS2.0 以降で使用できます。
->この機能を実行するために必要なiOSの最小バージョンはiOS2.0です

2 .dequeueReusableCellWithIdentifier:forIndexPath:
可用性
iOS6.0 以降で使用できます。
->この機能を実行するために必要なiOSの最小バージョンはiOS6.0です

この機能を使用したい場合は、編集 してください。現在のデバイスのバージョンを確認してから、これを実装できます。

NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
NSLog(@"curr version = %f",[currSysVer floatValue]);

if ([currSysVer floatValue] >= 6) {
    //iOS 6.0 and later code
    // dequeueReusableCellWithIdentifier:forIndexPath:
}
else{
    //dequeueReusableHeaderFooterViewWithIdentifier
}
于 2013-02-06T11:22:11.987 に答える
2

Appleのドキュメントを見ると、iOS6.0にdequeueReusableCellWithIdentifier: forIndexPath:付属していることがわかります。

つまり、iOS 5.Xデバイスでこのメソッドを呼び出そうとすると、例外がスローされます。

可能であれば、古い" dequeueReusableCellWithIdentifier:"呼び出しを使用した方がよいでしょう。

2つの呼び出しの大きな違いの1つは、後者(古い)の呼び出しはnilを返すことができることです。この場合、新しい再利用可能なセルを割り当て/初期化する必要があります。

于 2013-02-06T11:07:23.233 に答える