使用目标c时,我们可以在一个类中创建一个变量,例如:
// ArticleCell.h
#import <UIKit/UIKit.h>
@class ArticleTitleLabel;
@interface ArticleCell : UITableViewCell
{
ArticleTitleLabel *_titleLabel;
}
@property (nonatomic, retain) ArticleTitleLabel *titleLabel;
@end
然后在我们的另一个类中,我们可以使用import语句并使用该变量。例如:
但是,当我使用swift并声明一个变量时:
class ArticleTableViewCell: UITableViewCell {
var titleLabel:UILabel!
然后尝试在同一项目中的另一个类中使用该变量我得到以下错误:
我们应该在这做什么?构造一个strut并拥有一个全局静态变量或什么是正确的方法?
答案 0 :(得分:0)
当您将单元格出列时,您需要将其强制转换为ArticleCell
,其中titleLabel
已定义。一种方法是使用UITableViewCell
方法扩展configureCell()
并让动态调度调用正确的方法:
public func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell
configureCell(cell, atIndexPath: indexPath)
return cell
}
另一种不太通用的方法是:
public func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell
if let articleCell = cell as? ArticleCell {
articleCell.titleLabel.text = // ...
}
else { // other or unexpected cell type }
}