2011-06-22 73 views
4

我有一個問題,試圖爲我的iPhone應用程序在Xcode 4中創建一個自定義tableview單元格。我創建了.h和.m文件,創建了所有IBOutlets應該在單元格中出現的子視圖,並將實際控件拖到Interface Builder中的單元格的XIB文件中。但是,我無法弄清楚如何將插座連接到IB控制器。我讀過的每個教程都說控制 - 從對象列表中的TableViewCell對象拖動到子視圖,但是當我這樣做時,我的IBOutlets未在彈出窗口中列出。唯一可用的網點是'acccessoryView','backgroundView','editingAccessoryView'和'backgroundSelectedView'。我不應該也在該列表中看到自己的IBOutlet嗎?或者我沒有遵循正確的程序? (我對iPhone開發很新穎)。不能連接IBOutlets自定義UITableViewCell

這裏是我使用的自定義單元格類的代碼:

.H:

// 
// RecommendationCell.h 
// Tuneplug 
// 
// Created by Bill Labus on 6/21/11. 
// Copyright 2011 __MyCompanyName__. All rights reserved. 
// 

#import <UIKit/UIKit.h> 


@interface RecommendationCell : UITableViewCell { 
    UIImageView *artwork; 
} 

@property (nonatomic, retain) UIImageView *artwork; 

@end 

.M:

// 
// RecommendationCell.m 
// Tuneplug 
// 
// Created by Bill Labus on 6/21/11. 
// Copyright 2011 __MyCompanyName__. All rights reserved. 
// 

#import "RecommendationCell.h" 

@implementation RecommendationCell 

@synthesize artwork; 


- (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 
} 

- (void)dealloc 
{ 
    [super dealloc]; 
} 

@end 

(請注意,我減少了子視圖只是現在的'藝術品'圖像視圖,以簡化計算)。謝謝你的幫助!

回答

7

除非我誤解:

嘗試添加IBOutlet標記。

IBOutlet UIImageView *artwork; 

@property (nonatomic, retain) IBOutlet UIImageView *artwork; 

此標記的Xcode內的#define告訴Interface Builder來識別您的代碼。

+0

FACEPALM。哇,尷尬。不過謝謝,這確實可以解決它。 :) – blabus

+1

+1,但是最好的做法是在'@ property'上聲明這裏是由mmalc提到的:http://stackoverflow.com/questions/155964/what-are-best-practices-that-you-use-when - 寫入-目標c和 - 可可#167495 – darvids0n

2

即使您的自定義類的.xib文件與您的自定義類命名相同,您仍然需要在Interface Builder中將表視圖單元的Class Identity設置爲您的自定義類,但您仍然需要明確提及該文件的所有者是鍵入RecommendationCell。

(帕特里克提到的)另一個問題是,你應該在@property聲明中聲明你的.h的IBOutlet,而不是實例變量,就像這樣:

UIImageView *artwork; 

@property (nonatomic, retain) IBOutlet UIImageView *artwork; 
0

想更新,因爲我碰到這最近。在xcode 7.1.1中,您不能像通常爲UIViewController xib那樣從文件的所有者中拖動。

在界面構建器中轉到您的自定義UITableViewCell的.xib文件。

enter image description here

這是很難解釋的,所以我已經包括圖像,甚至用它我不知道我真的解釋這很好,但希望它幫助。或者至少如果我再次遇到它,我會知道我在說什麼。

右鍵單擊自定義的UITableViewCell包含您的UILabels或UIImage的等

這將彈出一個菜單,列出所有包含在您的自定義的UITableViewCell內的IBOutlets和對象。將鼠標放在右側的空圓上並按住Ctrl鍵並單擊拖動到您的對象。