在適應新的iOS 11 UISearchController
中的NavigationItem
後,我遇到了一些問題。iOS 11上的UIToolbar按鈕無法調用的操作UISearchController
我已將UIBarButtonItem
添加到UISearchController
的搜索欄的工具欄中。此按鈕在單擊時調用一個函數(作爲UIBarButtonItem
構造函數中的動作參數傳遞)。
在iOS 11之前,搜索欄已附加到tableHeaderView
,並且此工作完美(並且仍然有效)。當按鈕被點擊時,該功能被調用。
但是,在iOS 11中,即使實現相同,也不會調用該函數。
任何想法可能是錯的?或者是iOS 11中的錯誤?
private func setupSearchController() {
...
let toolbar = UIToolbar()
toolbar.sizeToFit()
// Create bar button item with image.
let qrBarButton = UIBarButtonItem(image: #imageLiteral(resourceName: "QR Code"), style: .plain, target: nil, action: #selector(didPressQRToolbarButton))
// Add the new button.
toolbar.items = [qrBarButton]
searchController.searchBar.inputAccessoryView = toolbar
// If the device is on iOS 11, use the "native" search bar placement.
if #available(iOS 11.0, *) {
navigationItem.searchController = searchController
// Don't use the large title in the navigation bar.
navigationController?.navigationBar.prefersLargeTitles = false
} else {
// Handled in subclasses.
}
}
/// Action for the QR toolbar button
func didPressQRToolbarButton(sender: Any) {
...
// NOT CALLED
}
創建欄按鈕項目時,您將'nil'作爲目標。只要傳遞'self'作爲目標,那麼你的代碼將無任何改變地工作。 並且在iOS的所有版本中都需要傳遞目標,否則按鈕將不知道在Tap事件中傳遞的位置和對象。 – Rishi