Swift多个单元格类型与公共变量

时间:2015-03-30 20:20:39

标签: ios uitableview swift

我想有一个函数返回当前在我的表视图中使用的单元格。

以下是我正在尝试的代码示例

class custom1Cell: UITableViewCell {
    @IBOutlet weak var p1: UITextField!
    @IBOutlet weak var p2: UITextField!
    @IBOutlet weak var p3: UITextField!
    @IBOutlet weak var imageView: UIImageView!
}

class custom2Cell: UITableViewCell {
    @IBOutlet weak var a1: UITextField!
    @IBOutlet weak var a2: UITextField!
    @IBOutlet weak var a3: UITextField!
    @IBOutlet weak var imageView: UIImageView!
}

class EditProp: UITableViewController, ImagePickerDelegate {
    func setImageValue(image: UIImage?) {
        if image != nil {
           let cell = getCurrentCellType()
           cell.imageView.image = image!   
        }
    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "mediaChooser" {
            let destinationViewController = segue.destinationViewController.topViewController as ImagePickerViewController
            destinationViewController.delegate = self

            let cell = getCurrentCellType()
            destinationViewController.image = cell.imageView.image
        }
    }
}

所以我想要的是用我正在使用的单元格的当前实例获取getCurrentCellType()的方法。会回来的东西

self.tableView.dequeueReusableCellWithIdentifier("custom1Cell") as custom1Cell

self.tableView.dequeueReusableCellWithIdentifier("custom2Cell") as custom2Cell

或者通过customTemplateCell:UITableViewCell的传承来声明我的所有custom1Cell,custom2Cell,这样就可以访问每个中的图像。

在我的表视图中一次只有一个单元格,而且,我得到了类似9单元格类型的东西。所以我想不要在我需要做出异常或访问imageView的每个地方进行切换......

有没有办法做到这一点,或者我做错了吗?

我是一个快速的小菜鸟。这是一个学习项目,我正在学习快速学习,所以对你的解释很好。提前谢谢!

如果我必须执行customTemplateCell,如何链接插座?

interface with code

1 个答案:

答案 0 :(得分:0)

我赞美@Paulw11

这样做的方法是使用一个类使customXCell继承imageView出口而不在每个customXCell中覆盖它。

看起来像:

class Custom1Cell: CustomTemplateCell {
    @IBOutlet weak var p1: UITextField!
    @IBOutlet weak var p2: UITextField!
    @IBOutlet weak var p3: UITextField!
    @IBOutlet weak var p4: UITextField!
}

class Custom2Cell: CustomTemplateCell {
    @IBOutlet weak var a1: UITextField!
    @IBOutlet weak var a2: UITextField!
}

class CustomTemplateCell: UITableViewCell {
    @IBOutlet weak var imageView: UIImageView!
}

必须在CustomTemplateCell中创建插座imageView。要验证它是否有效,您可以将其旁边的点悬停在分屏中,每个imageView都应更改为覆盖状态。