2015-01-02 12 views
5

Tôi đã tự hỏi liệu có thể kích hoạt UISearchDisplayController từ một nút trong thanh điều hướng thay vì từ thanh tìm kiếm chuẩn mà bạn nhận được khi bạn kéo Thanh điều khiển tìm kiếm khỏi đối tượng đó thư viện trong Xcode. Giống như chức năng này trong ứng dụng lịch:UISearchDisplayController từ một nút không phải là trường tìm kiếm mặc định

UISearchDisplayController in the Calendar app Bạn có thể nhận được một nút để bắn một hành động như vậy:

[self.searchDisplayController setActive:YES animated:YES]; 

Nhưng bạn vẫn cần thanh tìm kiếm và nó sinh động từ nơi thanh tìm kiếm được. Lý tưởng nhất là tôi muốn nó đến từ đầu như trong gif.

Bất kỳ trợ giúp nào được đánh giá cao. David.

+0

Chỉ cần tạo thanh tìm kiếm. Đặt khung ở chế độ offscreen khi tải. Hãy chắc chắn rằng nó có một ổ cắm tài sản. Animate nó xuống khi nút được nhấp và làm cho firstResponder – soulshined

Trả lời

7

Cũ câu hỏi, nhưng tôi có một câu trả lời vì vậy tôi nghĩ rằng nó là đáng để nhớ lại ...

Cuối cùng tôi sử dụng UISearchController hơn UISearchDisplayController.

Nếu bạn muốn kích hoạt tìm kiếm, nhưng không muốn một thanh tìm kiếm, tất cả các bạn phải làm điều đó kích hoạt tìm kiếm sử dụng

self.searchController.active = YES; 

và sau đó vì không có thanh tìm kiếm, bạn phải thực hiện presentSearchController: phương thức của UISearchControllerDelegate protocol.

- (void)presentSearchController:(UISearchController *)searchController { 
    [self.window.rootViewController presentViewController:self.searchController animated:YES completion:nil]; 
} 

Nó không hoàn toàn có hình động giống nhau, nhưng tôi chắc chắn bằng cách sử dụng chế độ xem bộ điều khiển xem thông thường, tôi có thể làm việc tương tự.

+0

Cảm ơn câu trả lời hữu ích. Bạn cũng gặp phải sự cố khi bàn phím không tự động hiển thị? Tôi đã cố gắng gọi 'self.searchController.searchBar trở thànhFirstResponder' ở những nơi khác nhau nhưng nó chỉ hoạt động sau khi hoạt ảnh trình diễn được hoàn thành. Vì vậy thanh tìm kiếm được trượt đầu tiên, sau đó bàn phím được trượt vào. Nhưng tôi muốn chúng hoạt động trong một lần. Vì lý do gì đó, 'searchBar.canBecomeFirstResponder' luôn là' NO' trước khi hoạt ảnh trình diễn hoàn tất. Bất kỳ ý tưởng? –

+0

Để làm cho nó hoạt động giống như trong ứng dụng Lịch, tôi trình bày bộ điều khiển tìm kiếm từ cùng một bộ điều khiển xem sở hữu nó (tức là 'tự' thay vì' self.window.rootViewController'), và cũng đặt 'searchController.hidesNavigationBarDuringPresentation = false 'và' searchController.searchBar.searchBarStyle = .prominent'. – maxkonovalov

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