2016-08-20 5 views
0

私は3種類のカスタムセルを持つテーブルビューを持っています。 ストーリーボードのインターフェース。新しいUITableViewを毎回作成する(セルを再利用しない)

セルのプロジェクトでは3つのクラスがあります。

私はこれを現在行っており、セルIBOutletsは出てこなくなっています。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
let cell = ListCell() 
    cell.configureCell(Data[indexPath.row]) 
    return cell 
} 


class ListCell : UITableViewCell { 

@IBOutlet weak var selectButton: UIButton! 

func configureCell(data: ParamList) { 
    selectButton.setTitle("Select " + data.name, forState: .Normal) 
} 

@IBAction func selectButtonPressed(sender: AnyObject) { 
    print(selectButton.currentTitle) 
} 

} 

すべてのセルが異なるプロパティを持っているため、どのセルも再利用したくありません。 テキストボックスには、インタラクティブな事項があり、最終的にWebサービスに提出する必要があります。

すべてのセルのメモリに新しいセルを作成したいと思います。 最大セル数は約15になりますので、メモリの問題はほとんどありません。

私はそれを行うことができますか?

+0

ストーリーボードからプロトタイプセルをデキューできるようにするには、異なる再使用識別子を持つ適切な数のプロトタイプセルを作成する必要があります。もう1つの方法は、プログラムでUI要素を作成し、ストーリーボードデキューを使用しないことです – Paulw11

答えて

0

私はこれを最終的に解決しました。 私は同じことをしました。 誰かが同じことをしたいと思ったら私のプロセスを記述しています。

警告は、絶対に必要な場合にのみ実行し、パフォーマンスに影響を与える可能性のあるセルがそれほど多くない場合にのみ実行してください。

画面外でスクロールしても、UITableViewのセルをメモリに残すには、テーブルビューをスクロールビューでカプセル化し、UITableViewのscrollEnabledをfalseに設定します。

ストーリーボードを使用する場合、TableViewに高さの制約を設定し、IBOutletをコードファイルにします。

異なる識別子を持つ新しいセルをプログラムで追加します。

"\(indexPath.section)\(indexPath.row)"

あなたのデータを取得した後、あなたのデータ数の乗数にあなたのtableViewの高さを設定。

すなわち

tableViewHeightConstraint.constant = heightOfOneCell * data.count tableView.delegate = self tableView.dataSource = self

あなたはまだメモリになりますscrollViewと、すべてのセルをスクロールすることができますこの方法です。

-2

なしdequeueReusableCellWithIdentifier。だから、あなたは何個の細胞を記憶させることができるのですか?

+0

識別子は文字列ではなく文字列ですか?だから、nilは動作しません.. –

関連する問題