UITableViewCell单独呈现

时间:2015-01-15 01:54:36

标签: ios uitableview swift

有没有办法逐个在UITableView中显示单元格?有点像动画,每行在距前一行延迟0.5秒后出现?

我尝试过使用NSTimer和带选择器的延迟方法,但两者都没有用。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell

    cell.userInteractionEnabled = false

      **NSThread.sleepForTimeInterval(0.5)**
       return cell




    **NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: "returnCell", userInfo: nil, repeats: false)**

    func returnCell(){
        return cell
    }
}

这是我尝试的两种方式

1 个答案:

答案 0 :(得分:2)

您无法在cellForRowAtIndexPath中实现延迟 - 您需要操纵基础表数据源或至少给人这样做的印象。假设您的表数据位于一个名为“data”的数组中,一种方法是 -

var cellCount=0
var timer?

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    if (data.count >0) {
        let self.timer = NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector:"incrementCellCount", userInfo: nil, repeats: true)
    }
}

func incrementCellCount() {
  self.cellCount++

  if (self.cellCount == data.count) {
     self.timer!.invalidate()
     self.timer=nil
  }

  self.tableview.insertRowsAtIndexPaths([NSIndexPath(forRow: self.cellCount-1, inSection: 0)], withRowAnimation: UITableViewRowAnimation.Automatic)
}


func tableView(tableView:UITableView!, numberOfRowsInSection section:Int)->Int
{
   return self.cellCount;
}