iOS 가이 상황에서 삽입을 자동으로 조정하기 때문에 tableView를 채우기에 충분한 행이 없을 때 iOS 8에서 모든 기존 솔루션이 작동하지 않습니다. (충분한 행이 있으면 기존 답변이 좋습니다)
이 문제에 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에서 실제로 작동하는 유일한 해결 방법입니다. 깔끔한 솔루션이 있는지 알고 싶습니다.