2012-08-02 79 views
1

重要编辑:我发布了错误的代码,像一个白痴。我在发布错误信息时曾尝试解决此问题,而不是第一个错误。请不要听我的哑巴。创建自定义表格单元,无法访问属性

我在Xcode中创建了Facebook Feed应用程序,并且在创建表格的自定义单元格时遇到了麻烦。我试图给自定义单元格上的两个UILabel赋值,并且它给了我错误“没有可见的@interface for'JSONFeedItemCell'声明选择器'nameLabel'”。我的代码如下:

主视图控制器

- (void)viewDidLoad 
{ 
    UINib *nib = [UINib nibWithNibName:@"JSONFeedItemCell" bundle:nil]; 
    [[self tableView] registerNib:nib forCellReuseIdentifier:@"JSONFeedItemCell"]; 
    ... // other stuff, not relevant 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    JSONFeedItemCell *cell = [tableView dequeueReusableCellWithIdentifier: 
           @"JSONFeedItemCell"]; 

    NSDictionary *p = [[[JSONFeedItemStore sharedStore] allItems] 
           objectAtIndex:[indexPath row]]; 
    [[cell nameLabel] setText:@"The Name"]; 
    return cell; 
} 

Cell类

#import <Foundation/Foundation.h> 

@interface JSONFeedItemCell : UITableViewCell 
{ 

} 

@property (weak, nonatomic) IBOutlet UIImageView *imageView; 
@property (weak, nonatomic) IBOutlet UILabel *detailLabel; 
@property (weak, nonatomic) IBOutlet UILabel *nameLabel; 

@end

让我知道如果你需要任何额外的信息或代码,我会很乐意提供。

+0

你在代码中设置nameLabel的值,因为我在这里看不到它。当你设置detailLabel的值时它也能工作吗?检查你是否已经正确地连接了你的IB连接 – AppHandwerker 2012-08-02 14:51:33

+1

当你从tableView中出列它时,你必须将单元格转换为JSONFeedItemCell。 – 2012-08-02 15:10:38

+0

Crud,我包含了detailLabel行而不是nameLabel行!谢谢你指出,我会改变它。我应该正确地连接到XIB集,尽管我不明白这会如何改变任何事情,因为我的错误在编译器中,据我所知,它不应该受XIB影响。 – Chance 2012-08-02 15:13:04

回答

0

有两件事:你必须确定。

#import "JSONFeedItemCell.h" //in your mainViewController.h 

而且,正如沃尔夫冈Schreurs的建议,强制转换的单元:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    JSONFeedItemCell *cell = (JSONFeedItemCell *)[tableView dequeueReusableCellWithIdentifier: 
           @"JSONFeedItemCell"]; 

    NSDictionary *p = [[[JSONFeedItemStore sharedStore] allItems] 
           objectAtIndex:[indexPath row]]; 
    [[cell nameLabel] setText:@"The Name"]; 
    return cell; 
} 

编辑:既然你不使用自定义的制定者/吸气你必须综合性能 在JSONFeedItemCell.m

@synthesize imageView; 
@synthesize detailLabel; 
@synthesize nameLabel; 

编译器应该警告你,如果你忘记这么做,但是用你永远不知道的所有可能的编译器设置。

+0

我修改了我的代码以反映您发布的内容,但我仍然收到相同的错误。 – Chance 2012-08-02 15:36:53

+0

我不认为类型转换是必要的 - 错误已经知道它抱怨什么类型的对象。 – jrturton 2012-08-02 15:37:44

+0

你是对的 - 这只是一个确保的预防措施。还有两件事情想起来:清理项目并重新启动xcode(我记得过去有类似的问题);并检查项目中的其他.h文件:您可能会发现一个迷惑编译器的杂散行;哦,你确定你正在导入.h而不是.m文件(xcode同时提供) – 2012-08-02 15:40:22

-1

你也许有类似的东西,我称之为圆圈导入?当你有两个相互导入的类时,Xcode会搞砸。 Xcode有时会显示像这样的“随机”错误。有时有助于清理和组织项目,并重新启动电脑。实际上我不知道为什么,但有时它会有所帮助。

+0

JSONFeedItemCell只导入基础,所以没有办法让它“圈子导入”。然后我重新启动了mac,并清理并重新构建了该项目,但仍然无法运行。 – Chance 2012-08-02 20:06:02