2009-06-03 30 views
5

Đối với iPhone, tôi có một UITableView được nhóm lại, có một phần và trong đó tôi đã thiết lập tiêu đề phần là đối tượng UILabel từ ngòi bút. Khi chế độ xem bảng hiển thị, tiêu đề hiển thị dưới dạng một dải màu đen - không có văn bản.Tiêu đề phần UITableView là tất cả màu đen

Chiều caoForHeaderInSection Tôi đã đặt chiều cao là frame.size.height của đối tượng UILabel. Khi tôi thay đổi chiều cao trong IB, chiều cao của sọc đen thay đổi. Vì vậy, tôi biết rằng các tập tin .m đã latched vào đúng đối tượng UILabel.

Trong trình gỡ rối, trong viewForHeaderInSection, có vẻ như chiều rộng của đối tượng UILabel là 0 và chiều cao là 1079574528 và văn bản là rỗng.

Bất kỳ suy nghĩ nào về những gì tôi đang làm sai?

Trả lời

0

Bạn có thể đăng mã cho các chức năng heightForHeaderInSectionviewForHeaderInSection của mình không? Lý thuyết đằng sau những gì bạn đang làm đúng, nhưng không nhìn thấy mã, sẽ gần như không thể tìm ra vấn đề ...

Có vẻ như bạn đặt một nhãn trên quan điểm trong IB và đang cố gắng sử dụng đó làm chế độ xem tiêu đề của bạn - đây không phải là cách làm đúng đắn. Nếu bạn không sử dụng viewForHeaderInSection, sau đó cung cấp cho rằng một thử .. như thế này:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    UILabel *lbl; 
    lbl.text = @"Header for The Only Section"; 
    //define other properties for the label - font, shadow, highlight, etc... 

    return lbl; 
} 
+2

Điều đó sẽ không hiệu quả vì bạn chưa khởi tạo nhãn. Bạn cần '[[UILabel alloc] initWithFrame: someFrame]'. Sau đó, bạn có thể đặt thuộc tính 'văn bản' của nó. –

25

Không chắc chắn những gì bạn đang làm sai, nhưng đây là một số mã ví dụ có thể giúp (từ một post trên blog của tôi):

#define SectionHeaderHeight 40 


- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { 
    if ([self tableView:tableView titleForHeaderInSection:section] != nil) { 
     return SectionHeaderHeight; 
    } 
    else { 
     // If no section header title, no section header needed 
     return 0; 
    } 
} 


- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 
    NSString *sectionTitle = [self tableView:tableView titleForHeaderInSection:section]; 
    if (sectionTitle == nil) { 
     return nil; 
    } 

    // Create label with section title 
    UILabel *label = [[[UILabel alloc] init] autorelease]; 
    label.frame = CGRectMake(20, 6, 300, 30); 
    label.backgroundColor = [UIColor clearColor]; 
    label.textColor = [UIColor colorWithHue:(136.0/360.0) // Slightly bluish green 
           saturation:1.0 
           brightness:0.60 
             alpha:1.0]; 
    label.shadowColor = [UIColor whiteColor]; 
    label.shadowOffset = CGSizeMake(0.0, 1.0); 
    label.font = [UIFont boldSystemFontOfSize:16]; 
    label.text = sectionTitle; 

    // Create header view and add label as a subview 
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, SectionHeaderHeight)]; 
    [view autorelease]; 
    [view addSubview:label]; 

    return view; 
} 
+0

Tôi gặp vấn đề "bar" đen nhưng CHỈ khi chuyển sang chế độ ngang và không khắc phục được khi quay lại chế độ dọc. Chỉ có cách tôi đã tìm thấy cho đến nay để "sửa chữa" nó là bằng cách gọi reloadData trên tableview nhưng đây là một phương pháp rất nặng để gọi để sửa chữa một cái gì đó này ... – kdbdallas

+1

từ không thể diễn tả bao nhiêu thời gian mẫu mã của bạn đã lưu tôi:) **cảm ơn bạn!!!! –

1

tôi đã cùng một vấn đề và đã không hoàn toàn tìm lý do tại sao các thanh màu đen ..

NHƯNG, thay vì cung cấp các quan điểm header và footer trong các phương pháp đại biểu, nếu tôi đặt val ues cho tableView.tableHeaderViewtableView.tableFooterView, tất cả đều ổn!

+0

Làm việc cho tôi. Tiêu đề của tôi là trong suốt và trên đầu trang của các hàng. – casey

0

3.1.3 không thích [UIColor clearColor]; hãy thử sử dụng cùng màu nền với chế độ xem bảng của bạn

0

Tôi đã quan sát hành vi tương tự khi làm mới sau khi nguồn dữ liệu được tải. Tôi nhận thấy điều này là do cách tôi làm mới chế độ xem bảng.

//[self loadView]; this caused the section header to go black. 
[self.tableView reloadData]; // this works! 
Các vấn đề liên quan