โซลูชันที่มีอยู่ทั้งหมดไม่ได้ผลสำหรับฉันใน iOS 8 เมื่อมีแถวไม่เพียงพอที่จะเติม tableView เนื่องจาก iOS จะปรับสิ่งที่ใส่เข้าไปโดยอัตโนมัติในสถานการณ์นี้ (คำตอบที่มีอยู่จะดีเมื่อมีแถวเพียงพอ)
หลังจากเสียเวลาไป 6 ชั่วโมงกับปัญหานี้ในที่สุดฉันก็ได้วิธีแก้ปัญหานี้
ในระยะสั้นคุณต้องแทรกเซลล์ว่างลงใน tableView หากมีเซลล์ไม่เพียงพอดังนั้นขนาดเนื้อหาของ tableView จึงใหญ่พอที่ iOS จะไม่ปรับสิ่งที่ใส่เข้าไปให้คุณ
นี่คือวิธีที่ฉันทำใน Swift:
1. ) ประกาศตัวแปรminimumCellNum
เป็นคุณสมบัติคลาส
var minimumCellNum: Int?
2. ) คำนวณminimumCellNum
และตั้งค่าtableView.contentOffset
ในviewWillAppear
let screenHeight = Int(UIScreen.mainScreen().bounds.height)
self.minimumCellNum = (screenHeight - 103 - heightOfOtherCustomView) / heightOfYourCell
self.tableView.contentOffset = CGPointMake(0, 44)
3. ) ใน tableView(tableView: UITableView, numberOfRowsInSection section: Int))
let numOfYourRows = YOUR LOGIC
if numOfYourRows > minimumCellNum {
return numOfYourRows
} else {
return minimumCellNum!
}
4. ) ลงทะเบียนเซลล์ว่างซึ่งมีselection
แอตทริบิวต์อยู่None
บนกระดานเรื่องราวและในtableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)
if indexPath.row < numOfYourRows {
return YOUR CUSTOM CELL
} else {
let cell = tableView.dequeueReusableCellWithIdentifier("EmptyCell", forIndexPath: indexPath) as! UITableViewCell
return cell
}
5. ) ใน tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
if tableView == self.tableView {
if numOfYourRows < (indexPath.row + 1) {
return
}
YOUR LOGIC OF SELECTING A CELL
}
นี่ไม่ใช่วิธีแก้ปัญหาที่สมบูรณ์แบบ แต่เป็นวิธีแก้ปัญหาเดียวที่ใช้ได้กับฉันบน iOS 8 ฉันอยากทราบว่ามีวิธีแก้ปัญหาที่ดีกว่านี้หรือไม่