2012-08-02 126 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

相關問題