হাই যারা ব্যবহারের UISearchController
এবং তারপর তার সংযোজনের UISearchBar
জন্য navigationItem.titleView
। এটি সমাধানের জন্য আমি আমার দিনের 4-5 ঘন্টা ব্যয় করেছি। আইওএস 11+ অনুসরণ পদ্ধতির সুপারিশ, যা নির্বাপণ করা হয় searchController
থেকে navigation.searchController
একেবারে সঠিক আমার ক্ষেত্রে নয়। এই অনুসন্ধানকন্ট্রোলার / অনুসন্ধানবারের স্ক্রিনটির একটি ব্যাকবটন আছে, এটি একটি কাস্টম one
আমি এটি iOS 10, আইওএস 11 এবং 12 এ বিভিন্ন ডিভাইসে পরীক্ষা করেছি tested আমার শুধু ছিল। আমি এই অসুরকে সমাধান না করে বাড়িতে যেতে পারব না। আমার আঁটসাঁট সময়সীমার পরে, আমি আজকের পক্ষে এটি করতে সবচেয়ে নিখুঁত।
সুতরাং আমি এই কঠোর পরিশ্রমটি কেবল যা করতে চাই তা ভাগ করে নিতে চাই, আপনি যেখানে চাইবেন সেখানে সবকিছুই স্থাপন করা আপনার উপর নির্ভর করবে (উদাহরণস্বরূপ আপনার ভিউমোডেলে ভেরিয়েবল)। এখানে এটা যায়:
আমার প্রথম স্ক্রিনে (হোম স্ক্রিনটি বলুন, এতে এই অনুসন্ধানের নিয়ামক নেই), আমার এটি আমার আছে viewDidLoad()
।
self.extendedLayoutIncludesOpaqueBars = true
আমার দ্বিতীয় স্ক্রিনে, যা অনুসন্ধানকন্ট্রোলার রয়েছে, আমার এটি এটি রয়েছে viewDidAppear
।
ওভাররাইড ফানক ভিউডিডঅ্যাপার (_ অ্যানিমেটেড: বুল) {সুপার.ভিউডিড অ্যাপিয়ার (অ্যানিমেটেড)
let systemMajorVersion = ProcessInfo.processInfo.operatingSystemVersion.majorVersion
if systemMajorVersion < 12 {
self.navigationItem.titleView = self.searchController.searchBar
}
if systemMajorVersion >= 11 {
self.extendedLayoutIncludesOpaqueBars = true
UIView.animate(withDuration: 0.3) {
self.navigationController?.navigationBar.setNeedsLayout()
self.navigationController?.navigationBar.layoutIfNeeded()
}
self.tableView.contentInset = UIEdgeInsets(top: -40, left: 0, bottom: 0, right: 0)
if self.viewHadAppeared {
self.tableView.contentInset = .zero
}
}
self.viewHadAppeared = true
}
এবং এখানে আমার অনুসন্ধানকন্ট্রোলারের ঘোষণা:
lazy var searchController: UISearchController = {
let searchController = UISearchController(searchResultsController: nil)
searchController.hidesNavigationBarDuringPresentation = false
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.textField?.backgroundColor = .lalaDarkWhiteColor
searchController.searchBar.textField?.tintColor = .lalaDarkGray
searchController.searchBar.backgroundColor = .white
return searchController
}()
সুতরাং আমি আশা করি এটি কোনও দিন কাউকে সহায়তা করবে।