8

Sử dụng bảng phân cảnh chung với giao diện người dùng thích ứng UISplitViewController.Tôi nên trình bày UISearchController bằng giao diện người dùng thích ứng UISplitView như thế nào?

tôi muốn trình bày một bộ điều khiển tìm kiếm trên (master) phía sơ cấp, sử dụng đoạn mã sau (từ bộ điều khiển xem tổng thể):

static NSString * const kCGISearchViewControllerID = @"SearchViewControllerID"; 

- (IBAction)searchButtonClicked:(UIBarButtonItem *)__unused sender { 
    SearchViewController *searchResultsController = [self.storyboard instantiateViewControllerWithIdentifier:kCGISearchViewControllerID]; 
    self.searchController = [[UISearchController alloc] initWithSearchResultsController:searchResultsController]; 
    self.searchController.searchResultsUpdater = searchResultsController; 
    self.searchController.hidesNavigationBarDuringPresentation = NO; 
    [self presentViewController:self.searchController animated:YES completion:nil]; 
} 

Nó ban đầu xuất hiện để làm việc một cách chính xác (không phụ thuộc vào định hướng bắt đầu):

Landscape starts out looking ok

vấn đề xuất hiện sau khi autorotation (bàn phím vẫn còn nhìn thấy, nội dung cơ bản vẫn bị mờ, nhưng thanh tìm kiếm đã biến mất):

enter image description here

Sau khi quay trở về cảnh quan, thanh tìm kiếm lại xuất hiện, nhưng chiều rộng của nó bây giờ là sai:

enter image description here

(Tôi cũng đã thử đặt bộ điều khiển tìm kiếm của searchBar trong titleView. Mặc dù searchBar điều chỉnh chính xác, nhưng bộ điều khiển kết quả tìm kiếm vẫn trông không đúng.)

Tôi thiếu gì để có được bản trình bày UISearchController làm animate chính xác khi UI thích nghi với các lớp kích thước thay đổi?

Cập nhật:

Thêm self.definesPresentationContext = YES; được tìm kiếm quán bar/kết quả xuất hiện trong tầm nhìn ban đầu, nhưng thanh tìm kiếm được hiệu ứng động dưới rằng thanh điều hướng, và không nhìn thấy được. Các vấn đề khác là chiều cao thanh tìm kiếm không co lại, khi nó quay từ chân dung (trong đó có một thanh trạng thái), trở lại phong cảnh.

+0

Tôi đã tiến một bước gần hơn bằng cách thêm 'self.definesPresentationContext = YES;' Bộ điều khiển tìm kiếm và kết quả giờ đây vừa trong chế độ xem chính, nhưng thanh tìm kiếm bị ẩn dưới thanh điều hướng. –

Trả lời

4

Bạn đang sử dụng phiên bản Xcode nào? Phiên bản iOS nào trên trình mô phỏng?
Cố gắng rằng việc sử dụng Xcode 6, iOS 8.4 - Đó là tất cả các mã tôi đã sử dụng trong MasterVC:

class MasterViewController: UITableViewController { 

    @IBAction func search(sender: UIBarButtonItem) { 
     let searchController = UISearchController(searchResultsController: nil) 
     searchController.hidesNavigationBarDuringPresentation = false 
     presentViewController(searchController, animated: true, completion: nil) 
    } 
... 
} 

Nó được trình bày trong các Thạc sĩ và khóa hướng của màn hình! Hành vi có thể đã thay đổi kể từ khi bạn đăng câu trả lời của mình.

+0

Có thể. Rất nhiều lỗi đã được sửa trong 8.3 và 8.4. Cảm ơn báo cáo. Tôi đã chuyển ứng dụng đó, nhưng sẽ ghi nhớ nó cho các ứng dụng trong tương lai. –

+0

Cập nhật cho iOS 9.2, swift2, xcode 7.2: Đã kiểm tra bên trong bảng phân cảnh Bảng, các thay đổi nhỏ đối với mã nhanh chóng @IBAction func startSearchSearch() {presentViewController (searchController, animated: true, completion: {})} – solenoid

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