2016-04-27 6 views
3

私はuitableview持っていると私は、細胞が、私はcellForRowAtIndexPathメソッドの内部sleep(2)dispatchafterを試してみましたios swift:セルをテーブルビューに表示するにはどうすればいいですか?

秒数が、どちらも作品の後つもりだ1 が

は、私はちょうどそれを待つために、細胞を返したいものの後を示して作りたいです秒数。 ここでは、コードです:

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

    cell.chatText.text = self.texts[indexPath.row] 
    cell.textLabel?.textColor = UIColor.whiteColor() 
    cell.backgroundColor = UIColor.clearColor() 
    sleep(4) 
    return cell 
} 

任意のアイデアは?

+1

すべてのセルまたはすべてのセルの遅延を一度にしたいですか? –

+0

すべてのセルと同様、最初のセルが表示されます----- 2秒------ 2番目のセルが表示されます –

答えて

3

Swift 2.1以降では、これはあなたのテーブルビューにセルのアニメーション挿入を取得する必要があります。私はあなたのviewDidAppearまたはあなたのUITableViewControllerまたはtableViewを含むUIViewControllerのviewDidLoadにdispatch_afterを置くでしょう。

let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(1 * Double(NSEC_PER_SEC))) 
dispatch_after(delayTime, dispatch_get_main_queue()) { 
tableView.beginUpdates() 
tableView.insertRowsAtIndexPaths([YourIndexPathYouWantToInsertTo], withRowAnimation: .Fade) 
tableView.endUpdates() 
} 

そしてNSIndexPath作成するには:このコードを追加cellForRow方法で

NSIndexPath(forRow: 0, inSection: 0) 
+0

私は今それを試してみるよ、あなたに仲良く! –

+0

遅延の直後にtableview.endupdate()エラーが表示されます。私は各セル内のuiview内でカスタムセルクラスとCanvasアニメーションを使用していますが、クラッシュの原因になりますか? –

+0

私は配列を挿入した後にThaaannnnnkkksを働かせました。私はそれが私からのばかげた間違いだと知っていますが、大丈夫です.3時間の良い神でした。本当にありがとうございました –

1

お試しperformSelector(selector:, withObject:, afterDelay:)メソッドをセル関数に入れ、セルを表示する別の関数(performSelectorのセレクタになる)を作成します。技術的には動作するはずです(各セルの返品を遅らせる必要があります)が、あなたのケースでは保証されません。試してみる!

+0

ありがとう!私は今それを試してみるでしょう。しかし問題は今私はちょうど初心者ですが、私は最高のことをやろうよ –

2

を:

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

    cell.chatText.text = self.texts[indexPath.row] 
    cell.textLabel?.textColor = UIColor.whiteColor() 
    cell.backgroundColor = UIColor.clearColor() 

    let delay = 0.55 + Double(indexPath.row) * 0.5; //calculate delay 
    print(delay) // print for sure 

    UIView.animateWithDuration(0.2, delay: delay, options: .CurveEaseIn, animations: { 
     cell.alpha = 1.0 // do animation after delay 
    }, completion: nil) 

    return cell 
} 

あなたがアニメーションを見るために、各セルのためのより多くの遅延を設定する必要がありますし、後に1つのセルを表示する

希望は

+0

それは別の素敵な人から別の素晴らしい方法です、それは本当に簡単です、私はそれを試してみよう、本当にありがとう仲間 –

関連する問題