无法为自定义UITableViewCell连接IBOutlets

时间:2011-06-22 01:39:07

标签: iphone xcode uitableview iboutlet

我在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

(请注意,我现在将子视图缩小为“艺术品”图片视图,以简化计算方法)。谢谢你的帮助!

3 个答案:

答案 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文件。

enter image description here

这很难解释,所以我已经包含了一张图片,即使有了它,我也不确定我是否真的很好地解释了这一点,但希望它有所帮助。或者至少如果我再遇到它,我会知道我在说什么。

右键单击包含UILabels或UIImage等的自定义uitableviewcell

这将显示一个菜单,其中列出了您的自定义uitableviewcell中包含的所有IBOutlet和对象。将鼠标放在右侧的空白圆圈上,然后按住Ctrl键单击并拖动到对象上。