我为tableView创建了一个自定义单元格,如下所示:
在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
这是我的cell
类ColleagueViewCell
:
#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
答案 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")