2017-09-15 35 views
21

Tôi đang gắn UISearchController vào thuộc tính navigationItem.searchController của UITableViewController trên iOS 11. Điều này hoạt động tốt: Tôi có thể sử dụng thanh tìm kiếm kiểu iOS 11 đẹp mắt.Hiển thị thanh tìm kiếm trong thanh điều hướng mà không cần cuộn trên iOS 11

Tuy nhiên, tôi muốn làm cho thanh tìm kiếm hiển thị khi khởi chạy. Theo mặc định, người dùng phải cuộn lên trong chế độ xem bảng để xem thanh tìm kiếm. Có ai biết làm thế nào là điều này là có thể?

enter image description here enter image description here

trái: tình hình mặc định sau khi ra mắt. Bên phải: thanh tìm kiếm được hiển thị (bằng cách cuộn lên). Tôi muốn hiển thị thanh tìm kiếm sau khi khởi chạy, như trong ảnh chụp màn hình bên phải.

Tôi đã nhận thấy rằng thanh tìm kiếm có thể được hiển thị bằng cách đặt thuộc tính hidesSearchBarWhenScrolling mục điều hướng của tôi thành sai. Tuy nhiên, điều này làm cho thanh tìm kiếm luôn hiển thị - ngay cả khi cuộn xuống -, bây giờ là điều tôi muốn.

+0

nơi bạn đã thêm mã 'ẩn Tìm kiếmBarWhenScrolling' –

+1

điều gì về việc đặt nó là s 'firstResponder'? –

Trả lời

52

Sau đây làm cho các thanh cuộn có thể nhìn thấy lúc đầu, sau đó cho phép nó để ẩn khi di chuyển:

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 
    if #available(iOS 11.0, *) { 
     navigationItem.hidesSearchBarWhenScrolling = false 
    } 
} 

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    if #available(iOS 11.0, *) { 
     navigationItem.hidesSearchBarWhenScrolling = true 
    } 
} 

Sử dụng isActive didn' t làm những gì tôi muốn, nó làm cho thanh cuộn hoạt động (hiển thị nút hủy bỏ, vv), khi tất cả tôi muốn là cho nó được hiển thị.

+0

Cảm ơn, đã làm việc cho tôi. Giải pháp thú vị mặc dù :) – Mikrasya

+0

Hoàn hảo! Cảm ơn! –

+1

Giải pháp này hoạt động, nhưng có các tác dụng phụ nếu bạn cũng đang hiển thị thanh điều hướng nếu trước đó nó bị ẩn (ví dụ: đẩy chế độ xem này vào thanh điều hướng) Thanh tìm kiếm sẽ xuất hiện tĩnh tại vị trí điều hướng thanh hoạt hình. Trông khủng khiếp :( –

-1

Bạn có thể đặt thuộc tính isActive thành true sau khi thêm SearchController vào navigationItem.

Chỉ cần như thế:

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    searchController.isActive = true 
} 

:)

+0

Không có phương thức setter 'setIsActive:' –

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