2

我有一个 UITableViewCell 类,该单元格是从另一个包含表格视图的类初始化的。我想将一个整数值从表格视图类传递给单元格类。

在目标 c 中,它只是通过制作全局变量并在制作全局变量类的实例时传递值来完成。我在声明时不想要任何值,并且这个全局变量会在它通过另一个类时更改值并获取值。

我不知道哪里出错了请看我下面提到的代码-

UITableViewCell 类:-

import UIKit

class PostHeaderCell: UITableViewCell {

var loopVariable: Int? // This is global variable that i have written

@IBOutlet weak var viewMain: UIView!
@IBOutlet weak var viewCategory: UIView!
@IBOutlet weak var mainViewHeight: NSLayoutConstraint!
@IBOutlet weak var topLayoutViewCategory: NSLayoutConstraint!
override func awakeFromNib() {
    super.awakeFromNib()
   print(loopVariable)

    viewMain.layer.cornerRadius=5.0
    viewMain.layer.borderColor = UIColor(red: 212.0/255.0, green: 217.0/255.0, blue: 221.0/255.0, alpha: 1.0).CGColor
    viewMain.layer.borderWidth=1.0
    var myVar = 50.0 as CGFloat
     for var i=0;i<loopVariable;i++
    {
        mainViewHeight.constant=mainViewHeight.constant+30
        var postCell :PostCategoryView?
        postCell = NSBundle.mainBundle().loadNibNamed("PostCategoryView", owner: self, options: nil)[0] as? PostCategoryView
        postCell!.frame=CGRectMake(10,myVar+10,postCell!.frame.size.width,50)
        print(postCell)
        myVar = myVar + 55.0;

    }
    self.layoutSubviews()
  }

    override func setSelected(selected: Bool, animated: Bool) {
      super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
  }
}

现在,我在另一个类中实现了这个 UITableViewCell 类,并从该类传递循环变量值,请查看下面提到的用于调用和实例化 PostHeaderCell- Class B 的代码:-

 var cell:PostHeaderCell! =     tableView.dequeueReusableCellWithIdentifier("PostHeaderCell",  forIndexPath: indexPath) as! PostHeaderCell
  cell.loopVariable=2
  return cell

注意 - :我想从 B 类初始化循环变量的值,但它总是给出 nil(我已将 2 作为 loopVariable 的值传递)。

4

1 回答 1

1

您需要的是一个“类”变量,用static. 这是一个简化的示例:

class Foo {
  static var counter : Int = 0

  init () {
    Foo.counter++
  }
}

在这个例子中,每次你创建一个新Foo的计数器都会增加。像这样:

  9> Foo()
$R0: Foo = {}
 10> Foo.counter
$R1: Int = 1
 11> Foo()
$R2: Foo = {}
 12> Foo.counter
$R3: Int = 2

但是,增量只是计数器值如何作用于类而不是实例的一个示例。

对于您的情况,您可以分配counterwith

Foo.counter = 10

您可以在其他功能中使用它:

class Foo { 
  // ...

  func awakeFromNib () {
    for var i = 0; i < Foo.counter; i++ {
      // ...
    }
  }
}
于 2015-05-06T05:05:43.387 回答