2016-08-08 31 views
5

Cập nhật 2:xem Tab thanh trở nên trống rỗng khi chuyển trở lại với thanh tìm kiếm tích cực

Kể từ khi mọi người vẫn đang xem xét câu hỏi này: bí quyết mà tôi nhận ra nó không thể tái tạo lỗi này trên một, thiết bị iOS bị cô lập thực tế. Khi bạn trình bày bộ điều khiển tìm kiếm, iOS cũng trình bày một bàn phím, bao gồm thanh tab. Để chuyển đổi tab, bạn phải loại bỏ bàn phím, điều này cũng sẽ loại bỏ bộ điều khiển tìm kiếm.

Lý do tôi nói "bị cô lập" là vì tôi không biết liệu bạn có thể sao chép điều này bằng bàn phím Bluetooth và không có thử. IOS bàn phím có thể không được trình bày với một bàn phím bên ngoài kết nối


Cập nhật:

Tôi đã thêm một ghi đè viewWillDisappear để xem 1 và tìm thấy một số kết quả thú vị:

Khi thanh tìm kiếm là không có mặt, các tab chuyển đổi sẽ loại bỏ chế độ xem trước khi tải chế độ xem tiếp theo. Tuy nhiên, khi thanh tìm kiếm hiển thị, chế độ xem KHÔNG được loại bỏ trước khi tải chế độ xem tiếp theo


Tôi có bộ điều khiển thanh tab ở gốc có 2 tab. Mỗi bộ điều khiển chuyển hướng sẽ đưa thiết bị đến chế độ xem. Đây là sơ đồ thô:

    /-> Navigation Controller -> View 1 
tab bar controller 
        \-> Navigation Controller -> View 2 

Điều này hoạt động bình thường. Tuy nhiên, View 1 có một UISearchController. Lỗi là nếu bạn nhấp vào nút tìm kiếm, bộ điều khiển tìm kiếm sẽ được hiển thị. Nếu bạn sau đó nhấp vào Xem 2 trong thanh tab và chuyển trở lại Chế độ xem 1, bộ điều khiển tìm kiếm vẫn ở đó và chế độ xem màu đen.

Hack hiện tại "sửa lỗi" của tôi là tắt thanh tab trong khi thanh tìm kiếm rõ ràng và bật lại nếu người dùng chọn "Hủy". Điều này có 2 vấn đề:

  1. Đó là trò đùa; người dùng sẽ có thể chuyển đổi các tab bất cứ khi nào họ muốn
  2. Nó chỉ lại cho phép nếu các số truy cập người dùng Huỷ, không nếu họ chỉ cần chạm ra khỏi tìm kiếm

Làm thế nào tôi có thể sửa lỗi này? Dưới đây là hình ảnh của những gì tôi đang nói về

enter image description here

enter image description here

enter image description here

enter image description here

Trả lời

6

tôi giải quyết này bằng cách làm theo câu trả lời tại: UISearchController causes black screen Swift 2.0

tôi thực hiện nó lik e vậy trong viewDidLoad:

self.definesPresentationContext = true 

    searchController.searchResultsUpdater = self 
    searchController.searchBar.delegate = self 
    searchController.dimsBackgroundDuringPresentation = false 
    searchController.definesPresentationContext = true 

Điều này giải quyết được khá nhiều vấn đề cho tôi. Sau đó, tôi gặp phải một vấn đề khác với cố gắng để phân biệt tại didSelectRowAt, mà trước đây chưa bao giờ là một vấn đề.Tôi đã giải quyết điều này bằng cách đầu tiên bật UISearchController, sau đó thực hiện một segue như bình thường:

_ = self.navigationController?.popViewController(animated: true)

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