เนื่องจากการออกแบบมุมมองตารางโดยใช้รูปแบบการจัดกลุ่มเปลี่ยนไปอย่างมากใน iOS 7 ฉันจึงต้องการซ่อน (หรือลบ) ส่วนหัวส่วนแรก จนถึงตอนนี้ฉันยังไม่ประสบความสำเร็จ
ค่อนข้างง่ายรหัสของฉันมีลักษณะดังนี้:
- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (section == 0)
return 0.0f;
return 32.0f;
}
- (UIView*) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if (section == 0) {
UIView* view = [[UIView alloc] initWithFrame: CGRectMake(0.0f, 0.0f, 640.0f, 0.0f)];
return view;
}
return nil;
}
- (NSString*) tableView:(UITableView *) tableView titleForHeaderInSection:(NSInteger)section
{
if (section == 0) {
return nil;
} else {
// return some string here ...
}
}
ถ้าฉันคืนค่าความสูงเป็น 0 อีกสองวิธีจะไม่ถูกเรียกด้วยดัชนีส่วน 0 แต่ส่วนหัวที่ว่างเปล่ายังคงวาดด้วยความสูงเริ่มต้น (ใน iOS 6 จะเรียกสองวิธีนี้อย่างไรก็ตามผลลัพธ์ที่มองเห็นได้จะเหมือนกัน)
ถ้าฉันส่งคืนค่าที่แตกต่างกันส่วนหัวของส่วนจะได้รับความสูงที่ระบุ
ถ้าฉันคืน 0.01 มันเกือบถูกต้อง อย่างไรก็ตามเมื่อฉันเปิด "ภาพไม่ตรงแนวสี" ในเครื่องจำลองจะทำเครื่องหมายเซลล์มุมมองตารางทั้งหมด (ซึ่งดูเหมือนว่าจะเป็นผลที่ตามมา)
คำตอบสำหรับคำถามUITableView: ซ่อนส่วนหัวจากส่วนว่างเปล่าดูเหมือนจะบ่งบอกว่ามีบางคนประสบความสำเร็จในการซ่อนส่วนหัวของส่วน แต่อาจใช้กับสไตล์ธรรมดา (แทนที่จะเป็นสไตล์ที่จัดกลุ่ม)
การประนีประนอมที่ดีที่สุดคือการคืนค่าความสูง 0.5 ส่งผลให้เส้นที่ค่อนข้างหนากว่าใต้แถบนำทาง อย่างไรก็ตามฉันจะขอบคุณถ้ามีใครรู้ว่าส่วนหัวส่วนแรกสามารถซ่อนไว้อย่างสมบูรณ์ได้อย่างไร
อัปเดต
จากการวิเคราะห์ของcaglar ( https://stackoverflow.com/a/19056823/413337 ) ปัญหาจะเกิดขึ้นก็ต่อเมื่อมีมุมมองตารางอยู่ในตัวควบคุมการนำทาง
section == 0
ไม่เกี่ยวข้องเพราะวิธีการที่จะไม่เรียกว่ามี