自定义UITableViewCell给了我:这个类不符合键值编码

时间:2012-08-16 10:44:02

标签: iphone ios uitableview

首先,这次讨论没有解决我的问题。

Custom UITableViewCell subclass: This class is not a key value coding-compliant

设定:

我在MainViewController中有一组Person对象。 想要在UITableView中的AllContactsViewController中显示对象。

问题:

使用默认UITableViewCell时,所有工作都按预期工作。 当我使用自定义TableCell时,我收到错误指向 这个类不符合键值编码。

我将outlets中的IB中的任意TableCell与我的TableCell类连接后,就会发生此错误。

注意:

name有三个属性:email&amp; imageView标签+ #import <UIKit/UIKit.h> @interface TableCell : UITableViewCell @property (weak, nonatomic) IBOutlet UILabel *nameLabel; @property (weak, nonatomic) IBOutlet UILabel *emailLabel; @property (weak, nonatomic) IBOutlet UIImageView *imageView; @end

希望你能提供帮助。

TableCell.h

#import "TableCell.h"

@implementation TableCell
@synthesize nameLabel, imageView, emailLabel;

TableCell.m

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

    TableCell *cell = (TableCell *)[tableView dequeueReusableCellWithIdentifier:cellIdent];

    if (cell == nil) {

        NSArray *array = [[NSBundle mainBundle]loadNibNamed:@"TableCell" owner:self options:nil];
        cell = [array objectAtIndex:0];
    }

    NSString *firstAndLastnameString =
    [NSString stringWithFormat:@"%@ %@",
     [(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] firstName],
     [(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] lastName]];

    cell.nameLabel.text = firstAndLastnameString;

    cell.emailLabel.text =
    [(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] eMail];

    cell.imageView.image =
    [(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] contactPicture];

    return cell;
}

AllContactsViewController.m

#import <UIKit/UIKit.h>
#import "VCDelegate.h"
#import "TableCell.h"

@interface AllContactsViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>

@property (weak, nonatomic) id <VCDelegate>delegate;

@property (weak, nonatomic) IBOutlet UITableView *allContactsTableView;

@property (strong, nonatomic) NSMutableArray *allContactsArray;

@property (assign) int currentArrayIndexNumber;

- (IBAction)closeBtnTapped:(id)sender;

@end

更新:

也许截图可以帮助IB。

enter image description here

添加了完整的AllContactsViewController.h

{{1}}

5 个答案:

答案 0 :(得分:61)

如果要连接文件所有者的插座,则应该采用不同的方式:

1 - 为您的TableCell类定义UITableViewCell的类:

enter image description here

2 - 连接出口不是来自文件所有者,而是来自对象列表中的TableCell:

Connect the outlets

答案 1 :(得分:1)

如果您使用的是Xcode 6 GM,则IB中存在可能导致此错误的错误。我不认为OP有这个问题,因为它更明显(你可以在日志中看到“未定义的类MyXXXCell”),但是因为你像谷歌一样从谷歌那里得到这个问题,试着在IB中输入类名然后再次点击进入,一旦它真的保存在storyboard / xml文件中就可以了。

答案 2 :(得分:1)

我有同样的问题,这里或其他讨论中的任何评论都帮助了我...最后我做了一个干净的事业我很确定我做的一切都是正确的,是的......神奇地工作了! / p>

答案 3 :(得分:1)

一切都在我的项目上完成,并且在尝试使用自定义单元格及其属性时仍然可以收到。这是我如何解决我的问题。

CustomUITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@“ CustomUITableViewCell” for IndexPath:indexPath];

真正令我震惊的是,只需从自定义单元格的“ 身份检查器”中删除CustomUITableViewCell类,然后重新输入即可。您将看到一个更改

模块值 从目标继承模块

让他们不要尝试继承它。

enter image description here

答案 4 :(得分:0)

在Git合并并解决一些冲突之后,这发生在我身上。 它搞砸了我的XCode项目。

我尝试了StackOverflow。起初我以为我的Custom class .m文件还没有被添加到Compile Sources类列表中。但这是一个案例,但即使在添加之后,它也给了我同样的问题。

我是如何解决的:

  1. 我保留了.xib文件及其支持自定义类.m和.h文件的备份。
  2. 然后清理项目并尝试通过XCode(可能不起作用)运行应用程序
  3. 然后将文件重新添加回XCode项目,它将起作用。
  4. 干杯!