TableViewController, iOS에서 여분의 빈 셀을 제거하는 방법-Swift
안녕하세요 TableViewController
, 두 개의 정적 셀이 있지만 표시되면 두 개의 정적 셀이 표시되고 테이블 뷰에 대한 다른 모든 빈 셀이 표시됩니다. 그러나 쓸모없는 셀을 표시하고 싶지 않습니다. 두 개의 정적 셀과 별도로 나머지 셀을 숨기려면 어떻게합니까?
당신의 viewDidLoad()
기능이 코드 줄을 추가합니다 :
tableView.tableFooterView = UIView()
UITableView를 선택하고 속성 검사기로 이동하여 스타일을 Grouped로 변경하십시오.
여기에 추가 하면 행 tableFooterView
을 UIView()
제거하도록 설정하는 이유 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
'Programming' 카테고리의 다른 글
vi 편집기에서 문자열 검색 및 개수 가져 오기 (0) | 2020.08.19 |
---|---|
지정된 형식 멤버 'Date'는 LINQ to Entities Exception에서 지원되지 않습니다. (0) | 2020.08.19 |
Android 5.0의 Datepicker 대화 상자 색상 변경 (0) | 2020.08.19 |
어떤 사용자 PHP가 실행 중인지 확인하는 방법은 무엇입니까? (0) | 2020.08.19 |
문자열 변수를 변수 이름으로 사용 (0) | 2020.08.19 |