Cách xóa các ô trống thừa trong TableViewControll, iOS - Swift


118

Xin chào Tôi có một ô TableViewControllercó hai ô tĩnh, tuy nhiên khi được hiển thị, nó hiển thị hai ô tĩnh và sau đó tất cả các ô trống khác cho chế độ xem bảng. Tuy nhiên tôi không muốn hiển thị các ô đó vì chúng vô dụng. Làm cách nào để ẩn phần còn lại của các ô ngoài hai ô tĩnh?

Câu trả lời:


403

trong viewDidLoad()chức năng của bạn thêm dòng mã này:

tableView.tableFooterView = UIView()

4
Ngắn gọn và hiệu quả! Làm việc như quyến rũ!
Yogipriyo

6
Điều đó có nghĩa là gì? Bạn có thể xây dựng?
Jayprakash Dubey ngày 22/8/2016

Câu trả lời này vẫn còn hiệu lực trong Swift 3. Ngoài ra, nếu bạn đặt màu nền của chế độ xem bảng giống với màu nền của chế độ xem chính, nó sẽ làm cho nó trông như thể phần chân trang đã biến mất.
Micah Montoya

Có một giải pháp tương tự cho NSTableView? Nó không có a tableFooterView.
ixany

SWIFT 3.0 hoạt động tuyệt vời vớitableView.tableFooterView = UIView()
Marcelo Gracietti

19

Chọn UITableView của bạn, đi đến trình kiểm tra thuộc tính và thay đổi kiểu thành Nhóm.

nhập mô tả hình ảnh ở đây


7

Để thêm vào điều này, lý do tại sao cài đặt tableFooterViewđể UIView()loại bỏ các hàng là vì bạn đang đặt một UIView()đối tượng trống cho thuộc tính. Theo tài liệu của Apple:

var tableFooterView: UIView?

Do đó, việc đặt UIView () trống sẽ không hiển thị gì bên dưới dữ liệu của bạn cho thuộc tính này.

Bạn có thể đưa các hàng trống trở lại bằng cách đặt lại tableFooterViewgiá trị mặc định, như vậy:

tableView.tableFooterView = nil

2
Xin lỗi nhưng nó không giống như một hack?
NGÀY 6/10/2016

2
Không, đây là một cách hoàn toàn hợp lệ để làm điều đó. Nếu bạn muốn đặt một bảngFooterView tùy chỉnh, bạn sẽ tạo một UIView tùy chỉnh, trước khi đặt nó thành bảngFooterView. Sau đó, đặt lại cho đến 0 chỉ là trả nó về giá trị mặc định.
bánh mì nướng

Tôi hiểu rồi. Cảm ơn) Nó có vẻ hơi kỳ lạ đối với tôi khi tôi mới bắt đầu nhanh chóng
NGÀY 7/10/2016

6

Thiết lập tableFooterViewnên loại bỏ thêm ô như lượt xem.

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

3

Bạn cũng có thể đạt được điều này trong Storyboard bằng cách chỉ cần kéo chế độ xem vào khu vực chân trang của chế độ xem bảng, sau đó đặt chiều cao và màu nền của nó thành 1 và xóa tương ứng bằng trình kiểm tra thuộc tính.

(Điều này giả định rằng bạn không thể hoặc không muốn chỉ sử dụng cài đặt kiểu Nhóm vì một số lý do. Nếu không, hãy làm điều đó.)


3

Swift 4 Xây dựng câu trả lời của HorseT, điều khiển đầu tiên kéo từ Chế độ xem bảng trong bảng phân cảnh của bạn, đến lớp Trình điều khiển xem của bạn và tạo một ổ cắm có tên là TableView.

@IBOutlet weak var tableView: UITableView!

Sau đó, viewDidLoad của bạn trong Trình điều khiển xem của bạn sẽ trông giống như thế này:

    override func viewDidLoad() {
    super.viewDidLoad()

    tableView.dataSource = self
    tableView.delegate = self

    tableView.tableFooterView = UIView()
}

2

Dựa trên các câu trả lời trên nhanh chóng .

tableView.tableFooterView = UIView(frame: .zero)

2

nếu bạn muốn xóa hàng cho tất cả UITableViewstrong ứng dụng của mình, chỉ cần thêm tiện ích mở rộng như thế này:

Swift 5.0

extension UITableView {

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

}

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

Gọi mã này bên trong viewWillAppearphương thức. Và sẽ làm việc


1

Thêm mã bên dưới trong các chức năng " ghi đè func viewDidLoad () " hoặc "ghi đè func viewWillAppear (_ hoạt hình: Bool)" của bạn .

tblOutletName.tableFooterView = UIView ()


0

Chỉ cần thêm:

tableView.tableFooterView = UIView()

Giải trình:

Điều này là hoàn toàn hợp lệ và hoạt động hoàn hảo trong swift 3.By Vì bạn đang đặt một đối tượng UIView () trống cho thuộc tính, Đặt bảngFooterView thành UIView () sẽ xóa các hàng.


-2

Abobe anwer là đúng. Chúng ta có thể đạt được điều này bằng cách thêm

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

-3

Tôi đã thử bảngview.tableFooterView = UIView () và nó không hoạt động với tôi. Tôi đang sử dụng TableViewViewCell tùy chỉnh, có lẽ đó là lý do.

Tôi đã tìm thấy một hack tho. Trong số func của tôiOfRowsInSection

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

Và điều đó làm cho UITableViewCell tùy chỉnh trống của tôi không hiển thị nữa. Tất nhiên nó là một cái trống thêm. Tôi sẽ kiểm tra nó thêm một số bằng cách thêm nhiều ô. Để tham khảo, tôi đang sử dụng Swift 3, Firebase, một lớp ô tùy chỉnh, bên trong hàm cellForRowAt.


Điều này sẽ không hiển thị mục cuối cùng trong mảng.
elarcoiris
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.