2009-10-10 46 views
21

Tôi đang phải đối mặt với một vấn đề tôi không thể giải quyết ... Tôi có một bảng nhóm có tiêu đề và phần chân trang phần được hiển thị một cách chính xác khi khởi động nhờThay đổi đầu trang/chân trang của phần UITableView KHI RUNNING ứng dụng?

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 

- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section 

Tuy nhiên, Tôi không biết làm thế nào để cập nhật chúng sau này, tôi không biết làm thế nào để thay đổi những văn bản và nó khá bực bội vì trong tâm trí của tôi nó không có gì khó hơn việc thay đổi một nhãn văn bản hoặc bất cứ điều gì ... (một số ". văn bản "thuộc tính ...)

Tôi đã tìm kiếm tất cả thông qua các tài liệu không có may mắn ...

Bất kỳ sự giúp đỡ rất & vui lòng đánh giá cao! Kính trọng, Enrico

+0

Có cách nào để cập nhật các tiêu đề/footers KHÔNG tải lại toàn bộ bảng ... hoặc toàn bộ phần? Cập nhật * JUST * đầu trang/chân trang. – Patricia

+0

Tôi không tin rằng việc cập nhật chỉ một phần của chế độ xem bảng sẽ giúp bạn đạt được bất kỳ điều gì hoặc bạn sẽ thấy sự khác biệt về hiệu suất. –

Trả lời

25

Trong phương pháp đại biểu, thêm một lời gọi phương thức trả về tên phần, ví dụ:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 
    switch (section) { 
     case firstSectionTag: 
      return [self firstSectionTitle]; 
     case secondSectionTag: 
      return [self secondSectionTitle]; 
     // ... 
     default: 
      return nil; 
    } 
} 

- (NSString *)firstSectionTitle { 
    // generate first section title programmatically, e.g. "return [[NSDate date] description];" 
} 

// ... 

Sau đó, khi bạn cần cập nhật các tiêu đề, gửi NSNotification kích hoạt một cái gì đó như phương pháp sau:

- (void)refreshTableSectionTitles:(NSNotification *)notification { 
    [tableView reloadData]; 
} 

Nếu bảng lớn và bạn muốn kiểm soát tốt hơn, vượt qua một NSNotification với một NSDictionary có chứa phần bạn muốn tải lại, đọc từ điển trong số -refreshTableSectionTitles để lấy lại phần NSInteger và sử dụng chế độ xem -reloadSections:withRowAnimation: của bảng để tải lại phần cụ thể đó.

7

Bạn có thể sử dụng:

-(void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation 

Và trong

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 

xác định văn bản tiêu đề mới của bạn trong bản Tuyên Bố.

Điều này sẽ tạo ra hoạt ảnh đẹp trong khi thay đổi đầu trang/chân trang.

4

Sử dụng dòng này trong mã của bạn nơi bạn muốn thay đổi tiêu đề:

[[self theTableViewToChangeItsHeader]reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade]; 
+1

trên iOS 7 điều này làm cho các ô trong phần biến mất. – malhal

+0

Câu hỏi này liên quan đến ios 5.1. Bạn đã nghiêm túc downvote nó? : D –

-4

Trong bạn sử dụng TableViewController

[self.tableView reloadSectionIndexTitles]; 
+0

không tải lại văn bản chân trang – malhal

+1

Điều này chỉ áp dụng cho thanh chỉ mục được hiển thị dọc bên phải của màn hình trong khi cuộn. – macserv

Các vấn đề liên quan