首先,这次讨论没有解决我的问题。
Custom UITableViewCell subclass: This class is not a key value coding-compliant
设定:
我在MainViewController
中有一组Person对象。
想要在UITableView
中的AllContactsViewController
中显示对象。
问题:
使用默认UITableViewCell
时,所有工作都按预期工作。
当我使用自定义TableCell
时,我收到错误指向
这个类不符合键值编码。
我将outlets
中的IB
中的任意TableCell
与我的TableCell
类连接后,就会发生此错误。
注意:
name
有三个属性:email
& 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。
添加了完整的AllContactsViewController.h
{{1}}
答案 0 :(得分:61)
如果要连接文件所有者的插座,则应该采用不同的方式:
1 - 为您的TableCell类定义UITableViewCell的类:
2 - 连接出口不是来自文件所有者,而是来自对象列表中的TableCell:
答案 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
类,然后重新输入即可。您将看到一个更改
模块值 从目标继承模块
让他们不要尝试继承它。
答案 4 :(得分:0)
在Git合并并解决一些冲突之后,这发生在我身上。 它搞砸了我的XCode项目。
我尝试了StackOverflow。起初我以为我的Custom class .m文件还没有被添加到Compile Sources类列表中。但这是一个案例,但即使在添加之后,它也给了我同样的问题。
我是如何解决的:
干杯!