2011-09-30 20 views

Trả lời

22

Trong phương thức viewDidAppear: của bộ điều khiển, đặt thuộc tính contentOffset (trong UIScrollView) của chế độ xem bảng để ẩn thanh tìm kiếm.

- (void)viewDidAppear:(BOOL)animated{ 
    [super viewDidAppear:animated];  
    self.tableView.contentOffset = CGPointMake(0, SEARCH_BAR_HEIGHT); 
} 
+11

Sử dụng chế độ xemDidAppear: có thể gây ra nội dungBắt đầu thay đổi xảy ra với người dùng ứng dụng. Sử dụng viewWillAppear: sẽ thực hiện thay đổi trước khi mọi thứ được hiển thị cho người dùng. – Shoerob

+2

Bạn cũng có thể làm điều này trong 'viewDidLoad' để làm điều đó chỉ một lần ban đầu, và vẫn nhớ vị trí của bạn trong tableView khi trở về xem (ví dụ trong một' UINavigationController'). – devios1

4

liên quan đến murat's answer, đây là một phiên bản di động và chính xác hơn là sẽ loại bỏ các hoạt hình bù đắp vào xem tải (nó giả định thanh tìm kiếm có một tài sản cửa hàng gọi searchBar):

- (void)viewWillAppear:(BOOL)animated 
{ 
    self.tableView.contentOffset = CGPointMake(0, self.searchBar.frame.size.height); 
} 

UPDATE:

Để thích ứng với khai thác trên biểu tượng tìm kiếm trong chỉ mục phần, phương pháp sau cần được triển khai, khôi phục nội dung bù trừ:

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title 
       atIndex:(NSInteger)index 
{ 
    index--; 
    if (index < 0) { 
     [tableView 
      setContentOffset:CGPointMake(0.0, -tableView.contentInset.top)]; 
     return NSNotFound; 
    } 
    return index; 
} 
Các vấn đề liên quan