2017-07-05 10 views
-1

cellForRowAtにuitableviewcellを登録しても問題ありません。登録する前に、デキューと無しのチェックによって、セルが登録されているかどうかを確認します。私はテーブルビューを利用しています。アプリ全体のジャンルを使用するために使用しており、種類のセルが必要になるかどうかはわかりません。cellForRowAtにuitableviewcellを登録しても問題ありません。

var cell = tableView.dequeueReusableCell(withIdentifier: textFieldCellIdentifier) as! TextFieldCell! 
     if cell == nil { 
      tableView.register(UINib(nibName: "TextFieldCell", bundle: nil), forCellReuseIdentifier: textFieldCellIdentifier); 
      cell = tableView.dequeueReusableCell(withIdentifier: textFieldCellIdentifier) as! TextFieldCell!; 
     } 
     return cell!; 
+1

問題の説明を追加してください。 – KKRocks

+0

番号。これをしないでください。メモリ過消費を避け、パフォーマンスを向上させます。 viewDidLoadを追加するだけです –

+0

IBでセルをデザインする場合、登録する必要はありません。そして、 'indexPath'パラメータで)他のメソッドを使用してセルをデキューすると、' nil'をチェックする必要さえありません。 – vadian

答えて

0

ありません、それはcellForRow atIndexがあなたの行に基づいていくつかの回を呼び出しますのでbad.Itが複数回登録しますです、あなたのtableViewをスクロールした場合&が呼び出すカウントします。

UITableViewCellviewDidLoadに一度登録すると良いと思います。

tableView.register(UINib(nibName: "TextFieldCell", bundle: nil), forCellReuseIdentifier: textFieldCellIdentifier); 
0

いいえ、問題ありません。

テーブルへのセルの登録は1回のプロセスです。

register(_, forCellReuseIdentifier: _)tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)を追加すると、この登録が複数回実行され、非常に小さいが望ましくないパフォーマンスの問題が発生するため、その必要はありません。

viewDidLoad()またはこれに類する方法に入れてみてください。

+0

しかし登録が行われるのは、cell == nil right? –

+0

@AravindAR OPのコードでは、セルは決してゼロになりません。 –

+0

@AravindARはい登録は一度起こります。 – sush4

関連する問題