2016-11-14 31 views
6

Tôi đang cố thay đổi màu của thanh điều hướng khi đẩy bộ điều khiển chế độ xem trên ngăn điều hướng, sử dụng barTintColor trong navigationController (_: willShow: animated :).iOS - Chuyển đổi màu thanh điều hướng khi nhấn nút quay lại

Đây là mã:

func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) { 
    if viewController is ViewerViewController { 
     navigationBar.barTintColor = UIColor(custom: .white) 
     navigationBar.tintColor = UIColor(custom: .black) 
    } else if viewController is FeedViewController { 
     navigationBar.barTintColor = UIColor(custom: .blue) 
     navigationBar.tintColor = UIColor(custom: .white) 
    } 
    } 

Tất cả mọi thứ làm việc tuyệt vời khi tôi đẩy bộ điều khiển xem và khi tôi sử dụng swipe lại cử chỉ (chuyển màu là trơn tru trong cả hai cách).

Tuy nhiên khi tôi nhấn nút quay lại, màu sắc không thay đổi lúc đầu, quá trình chuyển đổi chuyển hướng được thực hiện, và sau đó màu được thay đổi không có hình ảnh động.

Có ai đã gặp/giải quyết vấn đề này không? Bất kỳ đầu mối nào cũng sẽ được đánh giá cao.

+0

nếu bạn viết đoạn code sau đó nó sẽ được dễ dàng cho chúng tôi để xác định tại sao nó xảy ra –

Trả lời

0

tôi đã có vấn đề chính xác cùng, vì vậy thay vào nút "trở lại" với một tùy chỉnh trái nút thanh, và được gọi là:

navigationController?.popViewController(animated: true) 

chỉnh sửa:

thiết lập leftBarButton đã gây ra sự mất mát của swipe cử chỉ, vì vậy tôi cần một hack:

navigationItem.leftBarButtonItem = UIBarButtonItem(image: UIImage(named: "back"), style: .plain, target: self, action: #selector(pop)) 
navigationController?.interactivePopGestureRecognizer?.delegate = self 
+0

này không may mất cử chỉ swipeToGoBack của điều khiển chuyển hướng :( –

+0

@OliverAtkinson thêm các đại biểu interactivePopGestureRecognizer giải quyết vấn đề này –

+0

Cảm ơn, và những gì thực hiện trông giống như cử chỉ đại biểu đó như thế nào? –

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