2013-12-17 42 views
0

當我在TableView中設置原型單元格的標識符時,我陷入了一個問題,故事板無法編譯。我認爲我已經完成了一切,擴展了UITableViewCell並在該類中創建了IBOutlets,爲我的TableView創建了一個DataSource和Delegate,並實現了必要的方法和所有內容。當原型單元格的標識符設置時,故事板編譯失敗

我的單元有4個UIImages,有8個UILabels和1個UIButton。當我全部刪除它們時,故事板會用標識符編譯。但是,它並不是出現這些組件。令人驚訝的是,它編譯了這四個中的兩個UIImage,並且不會編譯其他任何內容。另外,如果我刪除了爲IBOutlets創建的所有UI項目,它並不會失敗。一旦它們全部被刪除,那些沒有IBOutlet的東西就會出現在表格中,但是執行並不在VenueCardCell類中。

我注意到失敗並不取決於我的VenueCardCell類的存在。即使該類不存在,它也會失敗。

在所有情況下,當我沒有爲原型單元格設置標識符時,所有內容都會編譯。但是桌子上什麼都沒有顯示出來。事實上,即使編譯時,表中也沒有顯示出來。

我不明白我在這裏做錯了什麼。請幫忙!讓我知道你是否需要在這裏看到其他東西。

這是我的類,它擴展UITableViewCell

@interface VenueCardCell : UITableViewCell 

@property (weak, nonatomic) IBOutlet UIImageView *vImage; 
@property (weak, nonatomic) IBOutlet UIButton *favoriteButton; 
@property (weak, nonatomic) IBOutlet UILabel *vnLabel; 
@property (weak, nonatomic) IBOutlet UILabel *vaLabel; 
@property (weak, nonatomic) IBOutlet UILabel *vdLabel; 
@property (weak, nonatomic) IBOutlet UILabel *waitLabel; 
@property (weak, nonatomic) IBOutlet UILabel *rwaitLabel; 
@property (weak, nonatomic) IBOutlet UILabel *ratioLabel; 
@property (weak, nonatomic) IBOutlet UILabel *fLabel; 

@end 

@implementation VenueCardCell 

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

這是我的ViewController類 - (爲簡單起見,我已經硬編碼了一些值,所以我只能看到同一個小區的10倍)

@interface HomeViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> 

@property (weak, nonatomic) IBOutlet UITableView *tableView; 

@end 

@implementation HomeViewController 

static NSString *CellIdentifier = @"VenueCard"; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    NSInteger numberOfRows = 10; 
    return numberOfRows; 
} 

- (VenueCardCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    [tableView registerClass:[VenueCardCell class] forCellReuseIdentifier:CellIdentifier]; 
    VenueCardCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

    return cell; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

@end 

回答

2

好吧,我發現了這個問題。幾個小時前,當我創建ViewController時,我已經將Cell的IBOutlets添加到ViewController。當然,這不起作用,所以我從課堂上刪除了插座,認爲Xcode會自動刪除故事板中的引用。不幸的是,這並沒有發生。我花了整整一個晚上搞清楚什麼是錯的。刪除這些引用後,一切工作正常。而現在我感到很蠢。

相關問題