2015-01-12 53 views
0

我试图通过设置自定义单元格类中的布尔值的值来激活我的自定义单元格内的函数。这是在这样做我的最好的尝试:瞬时数据传输到自定义单元格从视图控制器

func blurViewActive(gestureRecognizer:UIGestureRecognizer) { 
    if (gestureRecognizer.state == UIGestureRecognizerState.Began) { 
     println("STATE BEGAN") 

     var point = gestureRecognizer.locationInView(self.tv) 
     if let indexPath = self.tv.indexPathForRowAtPoint(point) { 

      let data = messageList[indexPath.row] as Messages 
      let mcell: TableViewCell = self.tv.dequeueReusableCellWithIdentifier("cell") as TableViewCell 
      mcell.read = true 
     } 
    } 
} 

但是,这并不工作,我真的不知道如何做到这一点任何其他方式。

这里是我的自定义单元格类的代码:

class TableViewCell: UITableViewCell, UIGestureRecognizerDelegate { 

    @IBOutlet weak var labelOutl: UILabel! 

    var timer = NSTimer() 
    var counter = 10 

    var read = Bool() 

    @IBOutlet weak var dateLabel: UILabel! 
    override func awakeFromNib() { 
     super.awakeFromNib() 
     if read == true{ 
     println("hello") 
     } 
    } 

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


    } 
    func timerStarted(){ 
    timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "update", userInfo: nil, repeats: true) 
    } 
    func update(){ 
    println(--counter) 
    } 
} 

我预期的结果是,一旦阅读已被设置为“真”在我的视图控制器,awakeFromNib功能里面的功能应立即执行。

+0

对此不起作用?你期望的结果是什么?你有没有试过直接调用函数? –

+0

@IanMacDonald我的预期结果是,一旦在我的视图控制器中将读取设置为“true”,应该立即执行awakeFromNib函数中的函数。查看更多信息。 – martin

+0

你应该重载'TableViewCell''func setRead'来完成这个。当你更新属性值时,你的'awakeFromNib'不会被调用。 –

回答

0

这里似乎有一些混乱点。

dequeueReusableCellWithIdentifier返回一个单元格用于调用它的表视图中。这将是新实例化的单元格或当前未在任何表格的可见行中显示的现有单元格。因此,在此单元格上设置read属性将不会有即时可见的效果。

如果你想访问一个可见的单元格,你可以使用cellForRowAtIndexPath,但是即使如此,对该单元格的更改也不一定会更新UI。相反,您可能需要更新支持该单元格的任何模型,并调用reloadRowsAtIndexPaths来更新特定的单元格。

此外awakeFromNib将仅在创建新单元格时被调用。那将是在从dequeueReusableCellWithIdentifier返回之前,因此在您可以采取任何行动之前,比如设置其read属性。由于您使用的是重用标识符,因此在您的表格或每个显示的行中,它也不会在每行中调用一次。相反,表视图将为每个可见行创建至少一个单元格,并将其重新用作行滚动进出视线。这很方便,因为最小化创建的对象数量有助于减少内存使用并减少可能减慢滚动性能的负载。但是这意味着您的数据源需要准备好更新这些单元格,因为它们从一行重复使用到下一行。

相关问题