7

Một nền chút về thiết lập quan điểm của chúng tôi:Làm thế nào để làm cho UISearchController không hoạt động khi chuyển đổi quan điểm

Bên trong một NavigationController, chúng tôi có một UITabBarController (với 3 tab) với một UIViewController mà có một UISearchController.

Có lỗi xảy ra khi chúng tôi để hoạt động UISearchController và chuyển sang chế độ xem khác, khi chúng tôi quay lại chế độ xem tìm kiếm, toàn bộ màn hình sẽ có màu đen. Tuy nhiên, khi UISearchController không hoạt động và chúng tôi chuyển đổi chế độ xem, điều này không xảy ra.

Chúng tôi đã cố gắng đặt bộ điều khiển thành không hoạt động khi tách giữa các chế độ xem; Tuy nhiên, khi UISearchController là không tích cực của các sự kiện segueing được gọi (không in log xuất hiện từ viewWillDissapear, viewWillAppear, vv)

Nhìn về chủ đề khác, chúng tôi cố gắng thiết lập self.definesPresentationContext = true nhưng điều đó không làm việc.

Có ai khác có vấn đề này hoặc biết cách khắc phục sự cố không?

+0

Bạn có thể thêm mã của mình không, tôi có thiết lập tương tự và tôi không gặp phải bất kỳ sự cố nào với 'UISearchController' –

+0

Bạn có chắc chắn rằng không có mã tùy chỉnh trong' viewWillDisappear' gây rối với bộ điều khiển tìm kiếm không? Thiết lập 'self.definesPresentationContext = true' cũng không làm việc cho tôi lúc đầu bởi vì trước khi tôi đã cố gắng loại bỏ bộ điều khiển tìm kiếm trên' viewWillDisappear'. Khi tôi đã xóa mã đó, nó hoạt động (bộ điều khiển tìm kiếm vẫn còn trong khi chuyển đổi các tab và không có màn hình màu đen). – lbarbosa

+0

Bất kỳ sửa lỗi nào cho điều này? Tôi đã có cùng một vấn đề và thiết lập 'self.definesPresentationContext = true' chỉ ẩn thanh điều hướng và thanh tìm kiếm của tôi – ryder

Trả lời

2

Cố gắng thiết lập các searchbarController hoạt động như thế này

self.resultSeachController.active = false 

trước khi bạn di chuyển trên các Xem tiếp

0

tôi phải đối mặt với cùng một vấn đề và giải quyết nó như sau:

tôi mở rộng UITabBarController và tạo một lớp tùy chỉnh TabBarController

class TabBarController: UITabBarController { 

Trong lớp mà tôi thực hiện phương pháp didSelectItem của nó, và trong phương pháp mà tôi gọi là một phương pháp điều khiển điểm cho rằng đóng cửa điều khiển tìm kiếm

// UITabBarDelegate 
override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) { 
    let vc = viewControllers![selectedIndex] as! CommonViewController 
    if vc.searchController.active { 
     vc.searchBarCancelButtonClicked_NoReload() 
    } 
} 

viewControllers là một mảng trong UITabBarController mà giữ tất cả các bộ điều khiển xem thuộc UITabBarController và 'selectedIndex' là chỉ mục của Tab (và bộ điều khiển xem) được hiển thị, và do đó người ta có thể truy cập vào viewController có hoạt động searchController.

Trong ứng dụng của tôi tất cả các bộ điều khiển chế độ xem là lớp con của lớp gốc có tên CommonViewController nơi tôi đặt tất cả các vars và phương thức chung cho tất cả các trình điều khiển chế độ xem, chẳng hạn như tất cả chức năng tìm kiếm. Vì vậy, tôi chỉ đơn giản là kiểm tra xem bộ điều khiển tìm kiếm có đang hoạt động không và nếu tôi gọi một phương thức làm cho nó không hoạt động và thực hiện một số dọn dẹp liên quan khác.

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