有没有办法逐个在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
}
}
这是我尝试的两种方式
答案 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;
}