3

私はまだ iOS 開発に少し慣れていないので、よくわからない警告が表示され続けます。

テーブルビューでカスタム セルを使用しており、そのクラスを SiteCell という UITableViewCell のサブクラスに設定しました。「didSelectRowAtIndexPath」メソッドで、選択したセルを SiteCell タイプとして宣言すると、次の警告が表示されます。

UITableViewCell 型の式で SiteCell __strong を初期化する互換性のないポインター型

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    SiteCell *cell = [tableView cellForRowAtIndexPath:indexPath];

    NSString *rowIdentity = [NSString stringWithFormat:@"%d", indexPath.row];
    [selectedRows setObject:[cell.siteTitleLabel text] forKey:rowIdentity];

    if(cell.accessoryType == UITableViewCellAccessoryCheckmark){
        cell.accessoryType = UITableViewCellAccessoryNone;
    }else{
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    }
}

この警告を取り除く方法について誰かが光を当てることができますか?

4

3 に答える 3

16

cellForRowAtIndexPath が適切にコーディングされており、常に を返すことがわかっていると仮定するとSiteCell、次のようにキャストするだけで済みSiteCell*ます。

SiteCell *cell = (SiteCell*)[tableView cellForRowAtIndexPath:indexPath];
于 2013-04-04T18:21:15.237 に答える
3

UITableViewCellサブクラスにキャストする必要があるため、コードはこれである必要がありますSiteCell

SiteCell *cell = (SiteCell *)[tableView cellForRowAtIndexPath:indexPath];
于 2013-04-04T18:16:45.380 に答える