4

on "cell"オブジェクト(UITableViewCellに基づく)を正常に作成し、cellForRowAtIndexPathを介してテーブルを構築する際に正常に使用しました。

ただし、 didSelectRowAtIndexPath内で行ったことをどのように分解しますか?

現在、 「タイプ'UITableViewCell'の式で'MyCell*__strong'を初期化する互換性のないポインタータイプ」というエラーが表示されます。

私のオブジェクト(MyCell)がUITableViewCellに基づいているとすると、なぜこのエラーが発生するのかわかりません。

私が間違っていることを理解するのを手伝ってくれませんか。

私の代替案は、セル内の2つのラベルのそれぞれに「タグ」を使用して、それらをそのように取得することですが、これがどのように機能するかについてさらに学ぶために、ここで実験しています。

どんな助けでも大歓迎です。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"myCellID";
    MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    if (cell == nil) {
        cell = [[MyCell alloc]
                initWithStyle:UITableViewCellStyleDefault
                reuseIdentifier:CellIdentifier];
    }

cell.accountCode.text = @"0009810";
cell.accountName.text = @"Agent Name";

return cell;
}

これが他の方法です。MyCellでエラーが発生します*cell= [tableView cellForRowAtIndexPath:indexPath];

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

// Get the cell that was selected
MyCell *cell = [tableView cellForRowAtIndexPath:indexPath];

AccountRecord *accountRecord = [[AccountRecord alloc] init];
accountRecord.accountCode = cell.accountCode.text;
accountRecord.accountName = cell.accountName.text;

[self performSegueWithIdentifier:@"AccountDetail" sender:accountRecord];

}

そしてここにMyCellがあります

#import <UIKit/UIKit.h>

@interface MyCell : UITableViewCell

@property (nonatomic,strong) IBOutlet UILabel *accountCode;
@property (nonatomic,strong) IBOutlet UILabel *accountName;

@end

どんな助けでもいただければ幸いです。

4

2 に答える 2

8

これを変える:

MyCell *cell = [tableView cellForRowAtIndexPath:indexPath];

以下に:

MyCell *cell = (MyCell *) [tableView cellForRowAtIndexPath:indexPath];
于 2012-10-24T04:42:36.827 に答える
1

UITableViewCell* を MyCell* にキャストするだけでよいと思います

MyCell *cell = (MyCell*)[tableView cellForRowAtIndexPath:indexPath];

他のすべては私には問題ないように見えます。

通常、cellForRowAtIndexPath を呼び出してセル情報を取得するのではなく、基になるデータ モデルから取得します。

于 2012-10-24T05:08:44.770 に答える