2013-09-25 20 views
16

Tôi có một ứng dụng mà tôi có một UITableView với các phần có thể cuộn ở bên cạnh thông qua sectionIndexTitlesForTableView:.Tạo thanh tìm kiếm như trong ứng dụng Danh bạ iOS 7

Trong tableHeaderView của UITableView Tôi muốn thêm UISearchBar, mà tôi muốn hoạt động giống như Apple đang sử dụng trong ứng dụng Danh bạ mới trong iOS7. Nhưng tôi không thể làm cho nó hoạt động được.

Thanh tìm kiếm không phải là 100% chiều rộng của màn hình, nhưng thay vào đó có cạnh phải của nó so với chỉ mục phần.

Câu hỏi của tôi là:

  • Làm thế nào để có được chiều rộng thanh tìm kiếm để 100% khi đó là tableHeaderView của một UITableView mà có một số phần có thể nhìn thấy?
  • Làm cách nào để tạo chuyển đổi như trong ứng dụng Danh sách liên hệ của iOS 7 nơi thanh điều hướng ẩn và nền màu xám của thanh tìm kiếm mở rộng đến thanh trạng thái?

Tôi đã thử nhiều thứ rồi, bao gồm thêm thanh tìm kiếm vào thanh điều hướng và sử dụng UISearchBarController, nhưng tôi không thể tìm thấy tài liệu tốt trên trang web của Apple về cách tạo điều này. Ngoài ra, hướng dẫn chuyển đổi từ iOS6 sang iOS7 không giúp ích gì cho tôi.

Dưới đây là hai hình ảnh minh họa vấn đề của tôi: enter image description here enter image description here

Trả lời

0

Hai điều:

1) Thiết lập tableView của sectionIndexBackgroundColor tới [UIColor clearColor].

2) Thực hiện phương pháp 'viewDidLayoutSubviews' để khắc phục khung cho UISearchBar

- (void)viewDidLayoutSubviews { 
    [super viewDidLayoutSubviews]; 
    CGRect barFrame = self.searchBar.frame; 
    barFrame.size.width = self.view.bounds.size.width; 
    self.searchBar.frame = barFrame; 
} 
5

Hai khác biệt chính như cách Apple làm ứng dụng của họ, mà sẽ giải quyết vấn đề của mình.

Đầu tiên, UISearchBar của chúng không phải là headerView cho tableView. Đó là chế độ xem riêng biệt phía trên bảng. Bạn sẽ cần phải thay đổi UITableViewController của bạn để một UIViewController có một UITableView vị trí ngay dưới UISearchBar của bạn.

Thứ hai, UISearchBar của họ có Bộ điều khiển hiển thị tìm kiếm được liên kết. Giả sử bạn đang sử dụng một tệp bảng phân cảnh, điều này đi kèm với nhau cho bạn - chỉ cần thêm UISearchBar với Bộ điều khiển hiển thị tìm kiếm. Điều này sẽ xử lý tất cả các chuyển đổi để bên dưới thanh trạng thái cho bạn.

+0

giải pháp của bạn thực sự làm nổi bật các điểm chính .. Tôi đã theo cách của bạn và quản lý để tìm thanh tìm kiếm ở trên cùng của tableView. Vấn đề duy nhất tôi có bây giờ là .. khi trường văn bản tìm kiếm được tập trung, thanh tìm kiếm sẽ đi tất cả các cách trên cùng, thậm chí bao gồm thanh trạng thái. Tôi không biết làm cách nào để khắc phục điều đó? – xialin

+0

Giải pháp tốt nhất. Tôi đã suy nghĩ làm thế nào để làm tương tự với UITableViewController, nhưng sự thật: nó là dễ dàng hơn để "xây dựng" UITableViewController và sao chép mã boilerplate, hơn cố gắng để ghi đè lên "scrollViewDidScroll" –

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