在swift类之间访问变量

时间:2015-01-10 18:27:02

标签: variables swift

使用目标c时,我们可以在一个类中创建一个变量,例如:

//  ArticleCell.h


#import <UIKit/UIKit.h>

@class ArticleTitleLabel;

@interface ArticleCell : UITableViewCell
{

    ArticleTitleLabel *_titleLabel;
}

@property (nonatomic, retain) ArticleTitleLabel *titleLabel;

@end

然后在我们的另一个类中,我们可以使用import语句并使用该变量。例如:

picture of titleLabel used in other file

但是,当我使用swift并声明一个变量时:

class ArticleTableViewCell: UITableViewCell {


    var titleLabel:UILabel!

然后尝试在同一项目中的另一个类中使用该变量我得到以下错误:

image showing error when using variable in another class

我们应该在这做什么?构造一个strut并拥有一个全局静态变量或什么是正确的方法?

1 个答案:

答案 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 }
  }