在XCODE中使用我自己的Cell对象

时间:2012-10-24 04:37:57

标签: ios xcode uitableview cell

我已经成功创建了我的“cell”对象(基于UITableViewCell),并在通过 cellForRowAtIndexPath 构建表时成功使用了它。

但是,如何在 didSelectRowAtIndexPath 中解构我所做的事情?

我目前收到错误“不兼容的指针类型初始化'MyCell * __ strong',其表达式为'UITableViewCell'”

鉴于我的对象(MyCell)基于UITableViewCell我不明白为什么我会收到此错误。

请你帮我理解我做错了什么。

我的另一种选择是对单元格中的两个标签使用“TAG”并按照这种方式进行操作,但我只是在这里尝试尝试了解更多有关这一切是如何工作的。

非常感谢任何帮助。

- (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

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:8)

改变这个:

MyCell *cell = [tableView cellForRowAtIndexPath:indexPath];

以下内容:

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

答案 1 :(得分:1)

我认为你只需要将UITableViewCell *转换为MyCell *

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

其他一切看起来都不错。

通常我不会通过调用cellForRowAtIndexPath来获取单元格信息,而是从底层数据模型中获取它。