6

Tôi đang sử dụng UISearchDisplayController với UISearchBar. Tôi đặt UISearchBar này trong ứng dụng của tôi sử dụng IB và tôi nhận được:UISearchDisplayController tự động tạo một UIPopovercontroller để hiển thị kết quả tìm kiếm nội dung?! Làm thế nào để loại bỏ nó?

alt text http://img6.imageshack.us/img6/1985/screenshot20100701at156.png

Fine: khi bạn bắt đầu taping, kết quả popovercontroller xuất hiện một cách kỳ diệu (tôi đã không viết bất cứ điều gì một mình để làm cho nó xuất hiện!)

Sau đó, khi liên tiếp được nhấp trong kết quả, tôi muốn bỏ PopoverController NHƯNG ở giai đoạn này, tôi không bao giờ instantiated UIPopoverController đứng về phía tôi: có vẻ như nếu có một hành vi đóng gói trong các UISearchDisplayController tự động bao bọc searchContentsController của nó bên trong một UIPopoverController. Đó là thực sự tuyệt vời bởi vì tất cả mọi thứ hoạt động hoàn hảo mà không làm bất cứ điều gì ngoại trừ việc tôi không thể nhận được các tài liệu tham khảo để UIPopoverController này để loại bỏ nó :(

Có ai biết làm thế nào để có được những tài liệu tham khảo này "kỳ diệu" tạo UIPopoverController? (điều này là bằng chứng cho iPad thực sự là một thiết bị "huyền diệu";)

Tôi nghĩ rằng sẽ có một tham chiếu đến UIPopoverController từ contentController của nó (thông qua thuộc tính cha mẹ của nó chẳng hạn), nhưng tôi không thể tìm thấy bất kỳ cách nào để có được một con trỏ cho nó:/

+0

Tôi cũng đã cố gắng để từ chức vào thanh tìm kiếm như trả lời đầu tiên, nhưng popover vẫn có thể nhìn thấy :( – yonel

Trả lời

11

Hiện [searchDisplayController setActive:NO animated:YES]; không hoạt động?

+0

Bạn biết những gì? Tôi chỉ nghĩ về việc thử này nhưng trước khi, tôi đã kiểm tra nếu ai đó trả lời câu hỏi o n SO và vâng, bạn nói đúng, nó hoạt động! Tôi rất vui khi cung cấp cho bạn số tiền +100 ngay trước thời hạn! : p – yonel

+1

Vui vì tôi có thể giúp. Tôi thậm chí còn không kiểm tra xem nó có hiệu quả không, nhưng chỉ nhìn vào Tài liệu dành cho nhà phát triển của Apple. ;) – jrtc27

+0

Cảm ơn bạn! Điều này làm việc hoàn hảo! – ArtSabintsev

0

Bạn có thể thêm một số chi tiết khác về cách bạn e có dây lên UISearchDisplayController trong IB? Nó không làm bất cứ điều gì đặc biệt với UIPopoverControllers trên iPad vì vậy tôi giả sử bạn đã đặt searchContentsController thành một bộ điều khiển là UIPopoverController? Nếu vậy thì bạn đã có tham chiếu mà bạn cần, mặc dù thông thường bạn không cần phải loại bỏ chế độ xem này, nó sẽ bị loại bỏ cho bạn khi bạn hủy tìm kiếm.

+0

các UISearchDisplayController không dây với bất cứ điều gì đặc biệt: http://bit.ly/ bESjTT Tôi đã tải lên một dự án XCode rất cơ bản mà chỉ tách biệt trường hợp sử dụng tại http://bit.ly/aG3qAY Nó chỉ là ví dụ về dự án bộ điều khiển xem Split, với một UISearchDisplayController được thêm vào. Trong dự án này, không có UIPopoverController nào được khởi tạo:/Các SearchContentController được thiết lập để một UIViewController và không để một UIPopoverCOntroller – yonel

1

Không ai trong số các giải pháp nêu trên làm việc cho tôi, nhưng tôi giải quyết nó với điều này:

[self.searchDisplayController setActive:NO animated:YES]; 
    [searchBar becomeFirstResponder]; 

Bằng cách này con trỏ nằm trong lĩnh vực này nhưng popover được sa thải khi không có kết quả.

Full mã:

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { 
    if ([searchText isEqualToString:@""]) { 
     [self.searchDisplayController setActive:NO animated:YES]; 
     [searchBar becomeFirstResponder]; 
    } 
} 
Các vấn đề liên quan