Deixe-me começar respondendo suas perguntas primeiro.
Tenho que codificar uma classe própria para cada célula? => Sim, acredito que sim. Pelo menos, eu faria assim.
Posso usar um tableviewController? => Sim, você pode. No entanto, você também pode ter uma visão de tabela dentro de seu View Controller.
Como posso preencher dados em células diferentes? => Dependendo das condições, você pode preencher dados em células diferentes. Por exemplo, vamos supor que você deseja que suas duas primeiras linhas sejam como o primeiro tipo de células. Então, você apenas cria / reutiliza o primeiro tipo de células e define seus dados. Ficará mais claro quando eu mostrar as capturas de tela, eu acho.
Deixe-me dar um exemplo com um TableView dentro de um ViewController. Depois de entender o conceito principal, você pode tentar e modificar como quiser.
Etapa 1: Crie 3 TableViewCells personalizadas. Eu o chamei de FirstCustomTableViewCell, SecondCustomTableViewCell, ThirdCustomTableViewCell. Você deve usar nomes mais significativos.
Etapa 2: Vá para Main.storyboard e arraste e solte uma TableView dentro de seu View Controller. Agora, selecione a visualização da tabela e vá para o inspetor de identidade. Defina "Prototype Cells" como 3. Aqui, você acabou de dizer ao TableView que pode ter 3 tipos diferentes de células.
Etapa 3: Agora, selecione a 1ª célula em sua TableView e no inspetor de identidade, coloque "FirstCustomTableViewCell" no campo Classe personalizada e defina o identificador como "firstCustomCell" no inspetor de atributos.
Faça o mesmo para todos os outros - defina suas classes personalizadas como "SecondCustomTableViewCell" e "ThirdCustomTableViewCell", respectivamente. Defina também os identificadores como secondCustomCell e thirdCustomCell consecutivamente.
Etapa 4: edite as classes de células personalizadas e adicione pontos de venda de acordo com sua necessidade. Eu editei com base na sua pergunta.
PS: Você precisa colocar as saídas sob a definição de classe.
Portanto, em FirstCustomTableViewCell.swift, sob o
class FirstCustomTableViewCell: UITableViewCell {
você colocaria seu rótulo e pontos de exibição de imagem.
@IBOutlet weak var myImageView: UIImageView!
@IBOutlet weak var myLabel: UILabel!
e no SecondCustomTableViewCell.swift, adicione os dois rótulos como-
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)
}
}
e o ThirdCustomTableViewCell.swift deve ser semelhante a-
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)
}
}
Etapa 5: Em seu ViewController, crie um Outlet para seu TableView e defina a conexão do storyboard. Além disso, você precisa adicionar UITableViewDelegate e UITableViewDataSource na definição de classe como a lista de protocolo. Portanto, a definição de sua classe deve ser semelhante a
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
Depois disso, anexe UITableViewDelegate e UITableViewDatasource de sua visualização de tabela ao seu controlador. Neste ponto, seu viewController.swift deve ser semelhante a-
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
PS: Se você fosse usar um TableViewController em vez de um TableView dentro de um ViewController, você poderia pular esta etapa.
Etapa 6: arraste e solte as visualizações e rótulos da imagem em sua célula de acordo com a classe Cell. e, em seguida, fornecer conexão com seus pontos de venda do storyboard.
Etapa 7: Agora, escreva os métodos necessários do UITableViewDatasource no controlador de visualização.
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()
}
}