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


118

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

답변:


403

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

tableView.tableFooterView = UIView()

4
짧고 효과적입니다! 매력처럼 일했다!
yogipriyo

6
이것은 무엇을 의미 하는가? 자세히 설명해 주시겠습니까?
Jayprakash Dubey

이 답변은 Swift 3에서도 여전히 유효합니다. 또한 tableview 배경색을 기본보기 배경색과 동일하게 설정하면 바닥 글이 사라진 것처럼 보이게됩니다.
Micah Montoya

에 대한 유사한 솔루션이 NSTableView있습니까? 그것은이 없습니다 tableFooterView.
ixany 2011

SWIFT 3.0 와 함께 잘 작동합니다tableView.tableFooterView = UIView()
마르셀 Gracietti

19

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

여기에 이미지 설명 입력


7

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

var tableFooterView: UIView?

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

다음 tableFooterView과 같이 기본값 으로 재설정하여 빈 행을 다시 가져올 수 있습니다 .

tableView.tableFooterView = nil

2
미안하지만 해킹처럼 보이지 않습니까?
AOY

2
아니요, 이것은 완전히 유효한 방법입니다. 사용자 지정 tableFooterView를 설정하려면 tableFooterView로 설정하기 전에 사용자 지정 UIView를 만듭니다. 그런 다음 nil로 재설정하면 기본값으로 돌아갑니다.
토스트

내가 참조. 고마워요) 제가 swift를 처음 사용하기 때문에 조금 이상해 보입니다
AOY

6

설정하면 tableFooterView뷰와 같은 추가 셀이 제거됩니다.

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

3

스토리 보드에서도 뷰를 테이블 뷰의 바닥 글 영역으로 드래그 한 다음 높이와 배경색을 1로 설정하고 속성 관리자를 사용하여 각각 지울 수 있습니다.

(이것은 어떤 이유로 그룹 스타일 설정을 사용할 수 없거나 사용하고 싶지 않다고 가정합니다. 그렇지 않으면 그냥 사용하십시오.)


3

Swift 4 Elaborating on HorseT 's answer, 먼저 스토리 보드의 Table View에서 View Controller 클래스로 드래그하고 tableView라는 콘센트를 만듭니다.

@IBOutlet weak var tableView: UITableView!

그런 다음 View Controller의 viewDidLoad는 다음과 같아야합니다.

    override func viewDidLoad() {
    super.viewDidLoad()

    tableView.dataSource = self
    tableView.delegate = self

    tableView.tableFooterView = UIView()
}

3

위의 답변을 바탕으로 신속하게 .

tableView.tableFooterView = UIView(frame: .zero)

2

UITableViews앱의 모든 행을 제거하려면 다음 과 같은 확장을 추가하면됩니다.

스위프트 5.0

extension UITableView {

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

}

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

viewWillAppear메서드 내에서이 코드를 호출합니다 . 그리고 작동합니다


1

" override func viewDidLoad () "또는 "override func viewWillAppear (_ animated : Bool)" 함수에 아래 코드를 추가하십시오 .

tblOutletName.tableFooterView = UIView ()


0

간단히 추가 :

tableView.tableFooterView = UIView()

설명:

이것은 완전히 유효하며 신속한 3에서 완벽하게 작동합니다. 빈 UIView () 객체를 속성에 설정하고 있으므로 tableFooterView를 UIView ()로 설정하면 행이 제거됩니다.


-2

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

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

-3

tableview.tableFooterView = UIView () 시도했지만 작동하지 않았습니다. 사용자 지정 TableViewViewCell을 사용하고 있는데 아마도 그 때문일 것입니다.

나는 해킹을 찾았습니다. 내 func numberOfRowsInSection에서

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

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


이것은 배열의 마지막 항목을 표시하지 않습니다.
elarcoiris
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.