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

여기에 행 tableFooterView을 UIView()제거하도록 설정하는 이유 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.