Ios 自定义 tableView:“XYZCustomCell”没有可见的@interface 声明选择器“initWithStyle:reuseIdentifier:”

Posted

技术标签:

【中文标题】Ios 自定义 tableView:“XYZCustomCell”没有可见的@interface 声明选择器“initWithStyle:reuseIdentifier:”【英文标题】:Ios custom tableView : No visible @interface for 'XYZCustomCell' declares the selector 'initWithStyle:reuseIdentifier:' 【发布时间】:2014-12-18 03:39:57 【问题描述】:

我正在努力完成本教程:http://zeroheroblog.com/ios/how-to-create-simple-tableview-with-custom-cells

我被这个功能卡在了最后:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    static NSString *cellIdentifier = @"Cell";
    XYZCustomCell *cell = (XYZCustomCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if(cell == nil)
    
        cell = [[XYZCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    

    XYZTextFieldFormElement *item = [self.formItems objectAtIndex:indexPath.row];
    cell.labelField.text = item.label;
    cell.valueField.delegate = self;
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    return cell;

在这一行:cell = [[XYZCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];我有错误写在主题标题中。

此外,没有找到 labelField 和 valueField。这是 XYZCustomCell.m 和 .h :

//  XYZCustomCell.m
#import "XYZCustomCell.h"

@implementation XYZCustomCell

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) 
        // Initialization code
    
    return self;


- (void)setSelected:(BOOL)selected animated:(BOOL)animated

    [super setSelected:selected animated:animated];

    // Configure the view for the selected state


@end

//  XYZCustomCell.h
#import <UIKit/UIKit.h>

@interface XYZCustomCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UITextField *valueField;
@property (weak, nonatomic) IBOutlet UITextField *labelField;

@end

我很确定正确地遵循了教程的步骤。你知道错误可能来自哪里吗?

谢谢

【问题讨论】:

我不知道你为什么会得到那个错误,但是教程添加了无用的代码。当您注册 nib 时,就像作者在教程中所做的那样,单元格永远不会为 nil,因此完全不需要 if(cell == nil) 子句。如果您只需要一些用于您的单元的 IBOutlets,那么您也不需要 .m 文件中的任何代码。 尝试重启 Xcode。有时它会感到困惑。 感谢您的回答。当我重新启动 xcode 时,问题仍然存在,但是当我将 XYZCustomCell 替换为 UITableViewCell 时,它会编译。我不明白,XYZCustomCell 继承自 UITableViewCell,我将它导入到我的控制器中。 【参考方案1】:

我进行了重构以删除类之前的所有 XYZ 前缀,它可以正常工作...

【讨论】:

这有什么帮助?然后你会丢失你的两个文本字段。

以上是关于Ios 自定义 tableView:“XYZCustomCell”没有可见的@interface 声明选择器“initWithStyle:reuseIdentifier:”的主要内容,如果未能解决你的问题,请参考以下文章

自定义 TableView 滚动指示器 (iOS)

iOS tableView分割线高度自定义

在 iOS 的 ISearchResult TableView 中显示自定义背景图片

iOS TableView如何访问自定义单元格变量

iOS自定义全屏返回与tableView左划删除手势冲突解决

IOS xib在tableview上的简单应用(通过xib自定义cell)