为什么我无法访问自定义单元格的属性?

时间:2019-10-23 09:39:41

标签: swift uitableview

我为tableView创建了一个自定义单元格,如下所示:

enter image description here

cellForRowAt中,我像这样加载cell

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    var cell = UITableViewCell(style: .subtitle, reuseIdentifier: "ColleagueViewId")
    let nib: NSArray = Bundle.main.loadNibNamed("ColleagueViewCell", owner: self, options: nil)! as NSArray
    cell = nib[0] as! ColleagueViewCell

    //Doesn't work:
    cell.nameOfObj
    cell.imButton

    return cell

}

但是我无法访问自定义cell的属性。如果我运行该应用程序,则会得到自定义cell,但没有数据(因为我尚未添加数据)。 cell类用objective c编写,h文件在桥中。就像我说的,我得到了cell并以正确的布局显示。那为什么不能拥有这些财产?让我知道您是否想要显示其他代码或其他内容。

EDIT 这是我的cellColleagueViewCell

#import <Foundation/Foundation.h>

@class InternalContact;

@interface ColleagueViewCell : UITableViewCell {
    IBOutlet UILabel *__weak nameCall;
    IBOutlet UILabel *__weak forwardCall;
    IBOutlet UIImageView *__weak iconImageView;
    IBOutlet UIButton *__weak imButton;

    InternalContact *contact;
}

@property(strong) InternalContact *contact;

@property (nonatomic, weak) UILabel *nameCall;
@property (nonatomic, weak) UILabel *forwardCall;
@property (nonatomic, weak) UIImageView *iconImageView;
@property (nonatomic, weak) UIButton *imButton;

@end

1 个答案:

答案 0 :(得分:1)

必须使用loadNibName(_:owner:options:使用cell使reuseIdentifier出队,而不是使用dequeueReusableCell(withIdentifier:for:)加载单元。

因此,替换下面的代码,

var cell = UITableViewCell(style: .subtitle, reuseIdentifier: "ColleagueViewId")
let nib: NSArray = Bundle.main.loadNibNamed("ColleagueViewCell", owner: self, options: nil)! as NSArray
cell = nib[0] as! ColleagueViewCell

使用

let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! ColleagueViewCell

在此之前,您必须使用{p>来向ColleagueViewCell注册tableView

tableView.register(UINib(nibName: "ColleagueViewCell", bundle: nil), forCellWithReuseIdentifier: "cell")