सभी मौजूदा समाधान iOS 8 पर मेरे लिए काम नहीं करते हैं जब टेबल व्यू को भरने के लिए पर्याप्त पंक्तियाँ नहीं होती हैं क्योंकि iOS इस स्थिति में स्वचालित रूप से इनसेट को समायोजित करेगा। (मौजूदा जवाब अच्छे हैं जब पर्याप्त पंक्तियाँ हैं)
इस मुद्दे पर 6 घंटे बर्बाद करने के बाद, मुझे आखिरकार यह समाधान मिल गया।
संक्षेप में, आपको पर्याप्त कक्ष नहीं होने पर तालिका में रिक्त कक्ष सम्मिलित करने की आवश्यकता होती है, इसलिए तालिका दृश्य की सामग्री आकार इतना बड़ा है कि iOS आपके लिए इनसेट समायोजित नहीं करेगा।
यहाँ मैं इसे स्विफ्ट में कैसे किया है:
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 पर काम करता है। मैं जानना चाहता हूं कि क्या कोई समाधान है।