Lượt xem tiêu đề bảng trong StoryBoards


191

Có cách nào để chèn Chế độ xem tiêu đề bảng (tableHeaderView) trong StoryBoard (giống như chúng ta thường làm trong Trình tạo giao diện) không?

Câu trả lời:


349

Có vẻ như người ta chỉ cần kéo một điều khiển lên trên cùng của chế độ xem bảng. Tôi không mong đợi nó sẽ dễ dàng như vậy.

Trước khi thả

Trước khi thả

Sau khi thả

Sau khi thả


29
Tôi đã ngạc nhiên khi thấy rằng đây là cách nó được thực hiện. Tôi nhận thấy trong triển khai của mình rằng để điều này hoạt động chính xác, tôi đã phải xóa mã phần heightForHeaderInSection: (NSInteger) nếu không tôi sẽ kết thúc với không gian thừa phía trên chế độ xem tiêu đề. Ngoài ra, để tiêu đề này "dính" ở đầu chế độ xem bảng, tôi đã phải triển khai phần viewForHeaderInSection: (NSInteger) và trả về chế độ xem này.
ozz

13
Điều này dường như chỉ hoạt động nếu bạn có ít nhất một ô nguyên mẫu trong bảng.
Accatyyc

4
@cdo, bạn có thể giải thích rõ hơn về cách bạn có thể khiến tiêu đề "dính" ở đầu chế độ xem bảng không? Tôi đã cố gắng thực hiện một cách mù quáng viewForHeaderInSection:và tôi đã gặp một lỗi "Không thể đồng thời thỏa mãn các ràng buộc". (Xem câu hỏi của tôi ở đây: stackoverflow.com/questions/14554051/ cấp )
ryanrhee

2
Cảm ơn, tôi không thể làm điều đó cho đến khi tôi biết rằng nó sẽ hoạt động, cần có độ chính xác kéo. Tôi đã cố gắng làm điều đó nhiều lần ...
Dave Ross

1
Bạn có thể sử dụng phác thảo bên trái để thực hiện thao tác kéo, việc này dễ thực hiện hơn là cố gắng nhấn vào vị trí chính xác phía trên ô nguyên mẫu đầu tiên, nếu bạn muốn đặt chế độ xem tiêu đề bảng. Tôi nhận thấy - có thể là lỗi Xcode (5.0) - rằng điều này sẽ chỉ hoạt động khi tôi đã chuyển chế độ xem ra khỏi hệ thống phân cấp thông thường trước tiên; Tôi kéo nó xuống tận cùng của phác thảo cho cảnh đó. Sau đó, ở bước thứ 2, tôi có thể di chuyển nó lên chế độ xem bảng.
Daniel Schneller

10

Bạn có thể thực hiện việc này một cách dễ dàng bằng cách kéo UIView/ UIImageViewngay bên dưới phần UITableViewphác thảo tài liệu (thay vì bố cục).

Nếu bạn cố gắng kéo theo bố cục thay vì phác thảo tài liệu, UITableViewCellnó sẽ nhảy lên xử lý hàng đầu gây khó chịu!


-2

Kéo và thả chế độ xem trên đầu bảng xem chỉ hoạt động với một kích thước màn hình, ít nhất là trong Xcode 11. Nó không có kích thước tốt trên các màn hình khác nhau.

Tôi chỉ tạo ra một khung nhìn và để nó ở đằng sau bảng xem trong bảng phân cảnh. Tôi đã tạo một IBOutlet cho nó:

@IBOutlet weak var audioView: UIView!

Sau đó, trong mã xem bảng tôi đã làm:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    return audioView
}

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 142
}

Nó hoạt động tốt trên tất cả các kích cỡ màn hình.


1
Câu hỏi là về chế độ xem tiêu đề bảng, không phải chế độ xem tiêu đề phần.
R. Rincón

@R. Rincón, tôi đã đề cập đến một tiêu đề phần ở đâu? Phần trong các phương pháp là cần thiết từ khung. Mỗi TableView có ít nhất một phần nếu bạn không biết điều đó. Chỉ cần vượt qua phần 0 Nếu bạn không có phần.
Badr

Mã này trả về audioView cho mỗi phần làm tiêu đề của phần. Nếu ai đó thực hiện điều này, tableView.tableHeaderView sẽ là con số không. Nếu họ có 5 phần, họ sẽ có năm tiêu đề. Nếu họ đã có tiêu đề phần và muốn thêm chế độ xem tiêu đề bảng, câu trả lời này không giúp ích gì cho họ. Điều này không trả lời câu hỏi, mà cụ thể đề cập tableHeaderView.
R. Rincón

Bạn có thể chỉ định chế độ xem tiêu đề cho từng phần với một số logic bên trong phương thức. TableViews được xây dựng với các phần trong tâm trí. Bạn luôn có các phần, nếu bạn không có, thì đó sẽ là phần 0. Không có phương pháp nào để chỉ định chế độ xem tiêu đề mà không chỉ định một phần.
Badr

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.