web-dev-qa-db-ja.com

iOS5のUITableViewのdequeueReusableCellWithIdentifierエラー

IOS 5でこのエラーが発生しています

-[UITableView dequeueReusableCellWithIdentifier:forIndexPath:]: unrecognized selector sent to instance 0xa217200

ただし、iOS 6ではエラーは発生しません。この問題を修正するにはどうすればよいですか?ここに私のコードがあります:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"MyCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; /// SIGABRT error

    if (!cell)
    {
        cell = [[UITableViewCell alloc]
        initWithStyle: UITableViewCellStyleSubtitle
        reuseIdentifier: CellIdentifier];
    }

    return cell;
}
49
user123

[〜#〜] edit [〜#〜]:このメソッドはiOS6 + SDKに新しく追加されました。

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

しかし、iOS 5では、UITableViewCellのインスタンスを作成するために、通常このメソッドを使用します:-

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

IOS 5では、iOS 6で使用した追加のパラメーターは必要ありません(forIndexPath :)。

メソッドを変更してください。それが動作します。

129
Nayan

エラーが発生する理由は次のとおりです。 iOS 6.0ドキュメントセットによると、UITableViewクラスリファレンスにはdequeueReusableCellWithIdentifier:はiOS 2.0以降で使用でき、dequeueReusableCellWithIdentifier:forIndexPath:はiOS 6.0以降で使用可能です。

7
Murray Sagal