49

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;
}
4

2 に答える 2

128

EDIT : このメソッドは、iOS6+ SDK で新しく追加されました。

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

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

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

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

だからやり方を変える。それが動作します。

于 2012-08-18T06:26:19.367 に答える
7

エラーが発生する理由は次のとおりです。iOS 6.0 ドキュメンテーション セットの UITableView クラス リファレンスで dequeueReusableCellWithIdentifier:は、iOS 2.0 以降でdequeueReusableCellWithIdentifier:forIndexPath:利用可能であり、iOS 6.0 以降で利用可能であると述べています。

于 2012-11-22T17:01:39.797 に答える