我遇到了一个问题,每当我在TableView中设置原型单元的标识符时,Storyboard都无法编译。我认为我已经做好了一切,扩展了UITableViewCell
并在该类中创建了IBOutlets,为我的TableView创建了一个DataSource和Delegate,并实现了必要的方法,以及所有方法。
我的手机有4个UIImages,8个UILabels和1个UIButton。当我全部删除它们时,故事板会使用标识符进行编译。但它不是那些组件存在的。令人惊讶的是,它编译了这四个中的两个UIImages,并且不会编译其他任何东西。此外,如果我删除了为IBOutlets创建的所有UI项目,它也不会失败。一旦它们全部被删除,那些没有IBOutlets的东西就会显示在表中,但是执行不会进入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
答案 0 :(得分:2)
好的,我发现了问题。几个小时前,当我创建ViewController时,我已将Cell中的IBOutlets添加到ViewController中。当然,这不会有效,所以我删除了类中的插座,认为Xcode会自动删除故事板中的引用。不幸的是,这不会发生。我整晚都在弄清楚出了什么问题。删除这些引用后,一切正常。现在我感觉很蠢。