มุมมองส่วนหัวของตารางในกระดานเรื่องราว


191

มีวิธีแทรกมุมมองตารางส่วนหัว (tableHeaderView) ใน StoryBoard (เช่นเดียวกับที่เราเคยทำใน Interface Builder) หรือไม่?

คำตอบ:


349

ดูเหมือนว่าจะมีเพียงลากตัวควบคุมไปด้านบนของมุมมองตาราง ฉันไม่ได้คาดหวังว่ามันจะง่ายขนาดนั้น

ก่อนปล่อย

ก่อนปล่อย

หลังจากวาง

หลังจากวาง


29
ฉันรู้สึกประหลาดใจที่พบว่าสิ่งนี้เกิดขึ้นได้อย่างไร ฉันสังเกตเห็นในการใช้งานของฉันที่จะทำงานอย่างถูกต้องฉันต้องลบ heightForHeaderInSection ของฉัน: (NSInteger) รหัสส่วนมิฉะนั้นฉันจะจบลงด้วยพื้นที่พิเศษเหนือมุมมองส่วนหัวของตัวเอง นอกจากนี้เพื่อให้ส่วนหัวนี้ "ติด" ที่ด้านบนของมุมมองตารางฉันต้องใช้ viewForHeaderInSection: (NSInteger) ส่วนและกลับมามุมมองนี้
ozz

13
ดูเหมือนว่าจะใช้งานได้หากคุณมีเซลล์ต้นแบบอย่างน้อยหนึ่งเซลล์ในตาราง
Accatyyc

4
@cdo คุณสามารถอธิบายรายละเอียดเกี่ยวกับวิธีการที่จะทำให้ส่วนหัว "ติด" ที่ด้านบนของมุมมองตารางได้หรือไม่? ฉันลองใช้งานแบบสุ่มสี่สุ่มห้าviewForHeaderInSection:และฉันพบข้อผิดพลาดว่า "ไม่สามารถตอบสนองข้อ จำกัด ได้พร้อมกัน" (ดูคำถามของฉันที่นี่: stackoverflow.com/questions/14554051/… )
ryanrhee

2
ขอบคุณฉันทำอย่างนั้นไม่ได้จนกว่าฉันจะรู้ว่ามันใช้ได้ผลต้องใช้การลากที่แม่นยำ ผมพยายามที่จะทำเช่นนั้นหลายครั้ง ...
เดฟรอส

1
คุณสามารถใช้เค้าร่างทางด้านซ้ายเพื่อทำการลากซึ่งทำได้ง่ายกว่าการพยายามกดจุดที่แน่นอนเหนือเซลล์ต้นแบบแรกหากคุณต้องการตั้งค่ามุมมองส่วนหัวของตาราง ฉันสังเกต - อาจเป็นข้อผิดพลาด Xcode (5.0) - สิ่งนี้จะใช้ได้เฉพาะเมื่อฉันย้ายมุมมองออกจากลำดับชั้นปกติก่อน ฉันลากมันไปจนถึงด้านล่างของโครงสำหรับฉากนั้น จากนั้นในขั้นตอนที่ 2 ฉันสามารถย้ายไปยังมุมมองตาราง
Daniel Schneller

10

คุณสามารถทำได้อย่างง่ายดายโดยการลากUIView/ UIImageViewด้านล่างUITableViewในเอกสารเค้าร่าง (แทนเค้าโครง)

หากคุณพยายามที่จะลากในเลย์เอาต์แทนที่จะเป็นโครงร่างเอกสารUITableViewCellจะข้ามไปที่การจัดการด้านบนที่น่าผิดหวัง!


-2

การลากและวางมุมมองด้านบนของ Tableview นั้นใช้งานได้เพียงขนาดหน้าจอเดียวอย่างน้อยที่สุดใน Xcode 11 มันไม่ได้ปรับขนาดได้ดีบนหน้าจอที่แตกต่างกัน

ฉันเพิ่งสร้างมุมมองและทิ้งมันไว้ข้างหลังโต๊ะในกระดานเรื่องราว ฉันสร้าง IBOutlet แล้ว:

@IBOutlet weak var audioView: UIView!

จากนั้นในรหัส tableview ฉันทำ:

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

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

มันทำงานได้ดีในทุกขนาดหน้าจอ


1
คำถามเกี่ยวกับมุมมองส่วนหัวของตารางไม่ใช่มุมมองส่วนหัวของส่วน
R. Rincón

@R Rincón, ฉันพูดถึงหัวข้อที่ใด? ส่วนในวิธีการจำเป็นจากกรอบงาน ทุก TableView มีอย่างน้อยหนึ่งส่วนถ้าคุณไม่รู้ เพียงผ่านส่วนที่ 0 หากคุณไม่มีส่วน
Badr

รหัสนี้ส่งคืน audioView สำหรับทุกส่วนเป็นส่วนหัวของส่วน หากมีคนทำสิ่งนี้ tableView.tableHeaderView จะไม่มีค่า หากพวกเขามี 5 ส่วนพวกเขาจะมีส่วนหัวห้าส่วน หากพวกเขามีส่วนหัวอยู่แล้วและต้องการเพิ่มมุมมองส่วนหัวของตารางคำตอบนี้ไม่ช่วยพวกเขา สิ่งนี้ไม่ตอบคำถามซึ่งกล่าวถึงเป็นtableHeaderViewพิเศษ
R. Rincón

คุณสามารถระบุมุมมองส่วนหัวสำหรับแต่ละส่วนด้วยตรรกะบางอย่างภายในวิธีการ TableViews สร้างขึ้นโดยคำนึงถึงส่วนต่างๆ คุณมักจะมีส่วนต่างๆหากไม่เช่นนั้นก็จะเป็นส่วนที่ 0 ไม่มีวิธีการระบุมุมมองส่วนหัวโดยไม่ระบุส่วน
Badr

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.