Önce sorularınızı cevaplayarak başlayayım.
Her hücre için kendi sınıfımı mı kodlamalıyım? => Evet, öyle olduğuna inanıyorum. En azından ben öyle yapardım.
Bir tableviewController kullanabilir miyim? => Evet, yapabilirsiniz. Bununla birlikte, Görüntü Kumandanızın içinde bir tablo görünümüne de sahip olabilirsiniz.
Verileri farklı hücrelerde nasıl doldurabilirim? => Koşullara bağlı olarak, verileri farklı hücrelere doldurabilirsiniz. Örneğin, ilk iki satırınızın ilk hücre türü gibi olmasını istediğinizi varsayalım. Yani, sadece ilk hücre tiplerini oluşturursunuz / yeniden kullanırsınız ve verilerini ayarlarsınız. Sanırım size ekran görüntülerini gösterdiğimde daha net olacak.
Size ViewController içinde TableView olan bir örnek vereyim. Ana konsepti anladıktan sonra, istediğiniz gibi deneyebilir ve değiştirebilirsiniz.
Adım 1: 3 Özel TableViewCells oluşturun. Ben buna FirstCustomTableViewCell, SecondCustomTableViewCell, ThirdCustomTableViewCell adını verdim. Daha anlamlı isimler kullanmalısınız.
Adım 2: Main.storyboard'a gidin ve View Controller'ınızın içine bir TableView sürükleyip bırakın. Şimdi, tablo görünümünü seçin ve kimlik denetçisine gidin. "Prototip Hücreleri" 3'e ayarlayın. Burada, TableView'ınıza 3 farklı hücre türüne sahip olabileceğinizi söylediniz.
Adım 3: Şimdi, TableView'ınızdaki 1. hücreyi seçin ve kimlik denetçisinde, Özel sınıf alanına "FirstCustomTableViewCell" yazın ve ardından tanımlayıcıyı öznitelik denetçisinde "firstCustomCell" olarak ayarlayın.
Diğerleri için de aynısını yapın - Özel Sınıflarını sırasıyla "SecondCustomTableViewCell" ve "ThirdCustomTableViewCell" olarak ayarlayın. Ayrıca tanımlayıcıları art arda secondCustomCell ve thirdCustomCell olarak ayarlayın.
Adım 4: Özel Hücre Sınıflarını düzenleyin ve ihtiyacınıza göre çıkışlar ekleyin. Sorunuza göre düzenledim.
Not: Çıkışları sınıf tanımının altına koymanız gerekir.
Dolayısıyla, FirstCustomTableViewCell.swift'te,
class FirstCustomTableViewCell: UITableViewCell {
etiketinizi ve resim görüntüleme çıkışlarınızı koyarsınız.
@IBOutlet weak var myImageView: UIImageView!
@IBOutlet weak var myLabel: UILabel!
ve SecondCustomTableViewCell.swift içinde, şu iki etiketi ekleyin:
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)
}
}
ve ThirdCustomTableViewCell.swift şöyle görünmelidir-
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)
}
}
Adım 5: ViewController'ınızda, TableView'unuz için bir Çıkış oluşturun ve bağlantıyı film şeridinden ayarlayın. Ayrıca, protokol listesi olarak sınıf tanımına UITableViewDelegate ve UITableViewDataSource eklemeniz gerekir. Yani, sınıf tanımınız şöyle görünmeli:
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
Bundan sonra, tablo görünümünüzün UITableViewDelegate ve UITableViewDatasource'unu denetleyicinize ekleyin. Bu noktada, viewController.swift'iniz şöyle görünmelidir:
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
Not: ViewController içinde TableView yerine TableViewController kullanacak olsaydınız, bu adımı atlamış olabilirsiniz.
Adım 6: Hücre sınıfına göre hücrenizdeki görüntü görünümlerini ve etiketleri sürükleyip bırakın. ve ardından film şeridinden çıkışlarına bağlantı sağlar.
Adım 7: Şimdi, UITableViewDatasource'un gerekli yöntemlerini görünüm denetleyicisine yazın.
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()
}
}