Programming

TableViewController, iOS에서 여분의 빈 셀을 제거하는 방법-Swift

procodes 2020. 8. 19. 21:10
반응형

TableViewController, iOS에서 여분의 빈 셀을 제거하는 방법-Swift


안녕하세요 TableViewController, 두 개의 정적 셀이 있지만 표시되면 두 개의 정적 셀이 표시되고 테이블 뷰에 대한 다른 모든 빈 셀이 표시됩니다. 그러나 쓸모없는 셀을 표시하고 싶지 않습니다. 두 개의 정적 셀과 별도로 나머지 셀을 숨기려면 어떻게합니까?


당신의 viewDidLoad()기능이 코드 줄을 추가합니다 :

tableView.tableFooterView = UIView()

UITableView를 선택하고 속성 검사기로 이동하여 스타일을 Grouped로 변경하십시오.

여기에 이미지 설명 입력


여기에 추가 하면 행 tableFooterViewUIView()제거하도록 설정하는 이유 UIView()는 속성에 개체를 설정하기 때문 입니다. Apple 문서에 따르면 :

var tableFooterView: UIView?

따라서 빈 UIView ()를 설정하면이 속성에 대한 데이터 아래에 아무것도 표시되지 않습니다.

You can bring the empty rows back by resetting tableFooterView to the default value, like so:

tableView.tableFooterView = nil

Setting the tableFooterView should remove extra cell like views.

   @IBOutlet weak var tableView: UITableView! {
        didSet {
            tableView.tableFooterView = UIView(frame: .zero)
        }
    }

You can achieve this also in Storyboard by simply dragging a view into the table view's footer area, and then set its height and background color to 1 and clear respectively using the property inspector.

(This assumes that you either can't or don't want to just use the Group style setting for some reason. Otherwise, just do that.)


Swift 4 Elaborating on HorseT's answer, first control drag from your Table View in your storyboard, to your View Controller class and create an outlet called tableView.

@IBOutlet weak var tableView: UITableView!

Then, your viewDidLoad in your View Controller should look something like this:

    override func viewDidLoad() {
    super.viewDidLoad()

    tableView.dataSource = self
    tableView.delegate = self

    tableView.tableFooterView = UIView()
}

tableView.tableFooterView = UIView.init(frame: CGRect.zero)

Call this code inside of the viewWillAppear method. And will work


Based on above answers in swift.

tableView.tableFooterView = UIView(frame: .zero)

if you want to remove rows for all UITableViews in your app, just add an extension like this:

Swift 4.0

extension UITableView {

override open func didMoveToSuperview() {
    super.didMoveToSuperview()
    self.tableFooterView = UIView()

}

Simply add:

tableView.tableFooterView = UIView()

Explanation:

This is totally valid and works perfectly in swift 3.By Since you are setting an empty UIView() object to the property, Setting tableFooterView to UIView() removes the rows.


I tried the tableview.tableFooterView = UIView() and it did not work for me. I am using a custom TableViewViewCell, perhaps that is why.

I did find a hack tho. In my func numberOfRowsInSection

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return yourArrayClass.count - 1
}

그리고 내 여분의 빈 사용자 정의 UITableViewCell이 더 이상 표시되지 않습니다. 물론 여분의 공백입니다. 더 많은 셀을 추가하여 좀 더 테스트하겠습니다. 참고로 cellForRowAt 함수 내에서 사용자 지정 셀 클래스 인 Swift 3, Firebase를 사용하고 있습니다.


Abobe anwer가 옳습니다. 다음을 추가하여이를 달성 할 수 있습니다.

tableView.tableFooterView = UIView() // to remove extra cells in tableView

Swift 4에서는 간단한 한 줄 코드로 불필요한 줄을 제거 할 수 있습니다.

//tableview refers to your UITableView
tableView.separatorStyle = .none

참고 URL : https://stackoverflow.com/questions/28708574/how-to-remove-extra-empty-cells-in-tableviewcontroller-ios-swift

반응형