我在Xcode 4中为我的iPhone应用程序创建自定义tableview单元时遇到了问题。我创建了.h和.m文件,为单元格内应存在的所有子视图创建了IBOutlets ,并将实际控件拖到Interface Builder中的单元格的XIB文件中。但是,我无法弄清楚如何将插座连接到IB控件。我读过的每个教程都说控制 - 从对象列表中的TableViewCell对象拖动到子视图,但是当我这样做时,我的IBOutlets没有列在弹出窗口中。唯一可用的插座是'acccessoryView','backgroundView','editingAccessoryView'和'backgroundSelectedView'。我不也应该在该列表中看到自己的IBOutlets吗?或者我没有遵循正确的程序? (我对iPhone开发很新。)
以下是我用于自定义单元类的代码:
.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
(请注意,我现在将子视图缩小为“艺术品”图片视图,以简化计算方法)。谢谢你的帮助!
答案 0 :(得分:7)
除非我误解:
尝试添加IBOutlet标记。
IBOutlet UIImageView *artwork;
和
@property (nonatomic, retain) IBOutlet UIImageView *artwork;
此标记是Xcode中的#define,它告诉Interface Builder识别您的代码。
答案 1 :(得分:2)
您必须将Interface Builder中表视图单元的Class Identity设置为您的自定义类,即使.xib
文件的名称与您的自定义类相同,您仍需要明确提及File的所有者是一个类型为RecommendationCell的对象。
另一个问题(Patrick提到)是你应该在IBOutlet
声明中的.h中声明@property
,而不是实例变量,如下所示:
UIImageView *artwork;
@property (nonatomic, retain) IBOutlet UIImageView *artwork;
答案 2 :(得分:0)
自从我最近遇到这个问题后想要更新。在xcode 7.1.1中,你不能像通常那样为UIViewController xib拖动文件的所有者。
在界面构建器中转到自定义UITableViewCell的.xib文件。
这很难解释,所以我已经包含了一张图片,即使有了它,我也不确定我是否真的很好地解释了这一点,但希望它有所帮助。或者至少如果我再遇到它,我会知道我在说什么。
右键单击包含UILabels或UIImage等的自定义uitableviewcell
这将显示一个菜单,其中列出了您的自定义uitableviewcell中包含的所有IBOutlet和对象。将鼠标放在右侧的空白圆圈上,然后按住Ctrl键单击并拖动到对象上。