ให้ฉันเริ่มด้วยการตอบคำถามของคุณก่อน
ฉันต้องเขียนโค้ดคลาสของตัวเองสำหรับทุกเซลล์หรือไม่ => ใช่ฉันเชื่ออย่างนั้น อย่างน้อยฉันก็จะทำแบบนั้น
ฉันสามารถใช้ tableviewController หนึ่งตัวได้หรือไม่ => ได้คุณทำได้ อย่างไรก็ตามคุณยังสามารถมีมุมมองตารางภายใน View Controller ของคุณได้อีกด้วย
ฉันจะเติมข้อมูลในเซลล์ต่างๆได้อย่างไร => ขึ้นอยู่กับเงื่อนไขคุณสามารถเติมข้อมูลในเซลล์ต่างๆ ตัวอย่างเช่นสมมติว่าคุณต้องการให้สองแถวแรกเป็นเหมือนเซลล์ประเภทแรก ดังนั้นคุณเพียงแค่สร้าง / ใช้เซลล์ประเภทแรกและตั้งค่าเป็นข้อมูล มันจะชัดเจนมากขึ้นเมื่อฉันแสดงภาพหน้าจอฉันเดา
ผมขอยกตัวอย่างด้วย TableView ภายใน ViewController เมื่อคุณเข้าใจแนวคิดหลักแล้วคุณสามารถลองแก้ไขได้ตามต้องการ
ขั้นตอนที่ 1: สร้าง 3 TableViewCells ที่กำหนดเอง ฉันตั้งชื่อมันว่า FirstCustomTableViewCell, SecondCustomTableViewCell, ThirdCustomTableViewCell คุณควรใช้ชื่อที่มีความหมายมากกว่านี้
ขั้นตอนที่ 2: ไปที่ Main.storyboard แล้วลากและวาง TableView ภายใน View Controller ของคุณ ตอนนี้เลือกมุมมองตารางและไปที่ตัวตรวจสอบข้อมูลประจำตัว ตั้งค่า "เซลล์ต้นแบบ" เป็น 3 ที่นี่คุณเพิ่งบอก TableView ของคุณว่าคุณอาจมีเซลล์ 3 ชนิดที่แตกต่างกัน
ขั้นตอนที่ 3: ตอนนี้เลือกเซลล์ที่ 1 ใน TableView ของคุณและในตัวตรวจสอบข้อมูลประจำตัวใส่ "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 เพิ่มสองป้ายกำกับเช่น -
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 ของคุณสร้าง Outlet สำหรับ 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()
}
}
ปล: หากคุณจะใช้ TableViewController แทนที่จะเป็น TableView ภายใน ViewController คุณสามารถข้ามขั้นตอนนี้ไปได้
ขั้นตอนที่ 6: ลากและวางมุมมองภาพและป้ายกำกับในเซลล์ของคุณตามคลาสเซลล์ จากนั้นให้เชื่อมต่อกับร้านค้าของพวกเขาจากสตอรี่บอร์ด
ขั้นตอนที่ 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()
}
}