实例化UITableViewCell以便在TableView方法之外使用

时间:2016-02-24 00:06:11

标签: swift swift2

这可能是一个简单的答案。

我正在尝试从我的自定义self.stat_value_color访问变量,我尝试了多种方式实例化单元格,每次我收到错误声明值为nil,从而导致我相信我没有正确初始化细胞。

我知道要实例化一个#fb0000我会做一些如:

tableviewcell

是否有类似的方法来初始化viewcontroller

澄清:

我想做的事情如下:

 let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("UserProfile") as! UserProfileViewController

2 个答案:

答案 0 :(得分:-2)

您不应该以这种方式直接创建单元格。相反,您首先注册您的单元格以便重复使用:

tableView.registerNib(UINib(nibName: "yourNib", bundle: nil), forCellReuseIdentifier: "CellIdentifier")

然后在需要时将细胞出列:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("CellIdentifier", forIndexPath: indexPath)
    cell.user = username
    return cell
}

这是因为tableView将重用已滚动屏幕的单元格以提高性能。请注意,它要求您设置单元格的重用标识符才能正确匹配。

答案 1 :(得分:-2)

正确的方法是你不应该这样做。正如迈克尔指出的那样,TableView重用了单元格,所以尽管可以获得对单元格的引用,但只有在单元格已经被创建的情况下才有可能,并且因此没有被出列以供重用。在这种情况下,您应该做的是更新模型,然后告诉TableView在对应于正确模型对象的索引处重新加载单元格。这样,您的应用程序遵循MVC设计,并且由于nil单元格引用而更加防止崩溃。