まず、あなたの質問に答えることから始めましょう。
すべてのセルに独自のクラスをコーディングする必要がありますか?=>はい、そう信じています。少なくとも、私はそのようにします。
1つのtableviewControllerを使用できますか?=>はい、使用できます。ただし、ビューコントローラー内にテーブルビューを配置することもできます。
さまざまなセルにデータを入力するにはどうすればよいですか?=>条件に応じて、さまざまなセルにデータを入力できます。たとえば、最初の2行を最初のタイプのセルのようにしたいとします。したがって、最初のタイプのセルを作成/再利用して、データを設定するだけです。スクリーンショットを表示すると、もっと明確になると思います。
ViewController内のTableViewの例を示します。メインコンセプトを理解したら、とにかく好きなように変更できます。
手順1:3つのカスタムTableViewCellを作成します。FirstCustomTableViewCell、SecondCustomTableViewCell、ThirdCustomTableViewCellという名前を付けました。より意味のある名前を使用する必要があります。
ステップ2:Main.storyboardに移動し、TableViewをビューコントローラー内にドラッグアンドドロップします。次に、テーブルビューを選択し、IDインスペクターに移動します。「プロトタイプセル」を3に設定します。ここでは、TableViewに3種類のセルがある可能性があることを伝えました。
ステップ3:次に、TableViewとIDインスペクターで最初のセルを選択し、[カスタムクラス]フィールドに「FirstCustomTableViewCell」を入力して、属性インスペクターで識別子を「firstCustomCell」に設定します。
他のすべてに対して同じことを行います-カスタムクラスをそれぞれ「SecondCustomTableViewCell」および「ThirdCustomTableViewCell」として設定します。また、識別子をsecondCustomCellおよびthirdCustomCellとして連続して設定します。
ステップ4:カスタムセルクラスを編集し、必要に応じてアウトレットを追加します。あなたの質問に基づいて編集しました。
PS:コンセントをクラス定義の下に置く必要があります。
したがって、FirstCustomTableViewCell.swiftでは、
class FirstCustomTableViewCell: UITableViewCell {
ラベルと画像ビューのアウトレットを配置します。
@IBOutlet weak var myImageView: UIImageView!
@IBOutlet weak var myLabel: UILabel!
そしてSecondCustomTableViewCell.swiftに、2つのラベルを追加します-
import UIKit
class SecondCustomTableViewCell: UITableViewCell {
@IBOutlet weak var myLabel_1: UILabel!
@IBOutlet weak var myLabel_2: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
そして、ThirdCustomTableViewCell.swiftは次のようになります。
import UIKit
class ThirdCustomTableViewCell: UITableViewCell {
@IBOutlet weak var dayPicker: UIDatePicker!
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
ステップ5:ViewControllerで、TableViewのアウトレットを作成し、ストーリーボードからの接続を設定します。また、プロトコルリストとして、クラス定義にUITableViewDelegateとUITableViewDataSourceを追加する必要があります。したがって、クラス定義は次のようになります。
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
その後、テーブルビューのUITableViewDelegateとUITableViewDatasourceをコントローラーにアタッチします。この時点で、viewController.swiftは次のようになります。
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
PS:ViewController内でTableViewではなくTableViewControllerを使用する場合は、この手順をスキップできます。
ステップ6:Cellクラスに従って、セルに画像ビューとラベルをドラッグアンドドロップします。ストーリーボードからアウトレットへの接続を提供します。
ステップ7:次に、ビューコントローラーでUITableViewDatasourceに必要なメソッドを記述します。
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if indexPath.row == 0 {
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "firstCustomCell")
//set the data here
return cell
}
else if indexPath.row == 1 {
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "secondCustomCell")
//set the data here
return cell
}
else {
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "thirdCustomCell")
//set the data here
return cell
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}