2015-02-15 11 views
5

मैं एक UITableViewController वर्ग जिसमें मैं एक UISearchController को लागू कर रहा हूँ है। मैं निम्नलिखित प्रतिनिधियों जोड़ दिया है:कैसे मैं एक UITableViewController प्रोटोकॉल UISearchResultsUpdating के अनुरूप है?

class EmployeesTableView: UITableViewController, NSFetchedResultsControllerDelegate,UISearchResultsUpdating{ 

मैं UIKit और CoreData दोनों का आयात कर रहा हूँ। मुझे निम्न त्रुटि मिल रही है:

"Type 'CustomTableViewController' does not conform to protocol UISearchResultsUpdating" 

नियंत्रक को प्रोटोकॉल के अनुरूप बनाने के लिए मुझे क्या करने की आवश्यकता है?

+0

आप "CustomTableViewController" नाम वर्ग है? – gagarwal

उत्तर

8

आप अपने वर्ग परिभाषा के लिए प्रोटोकॉल को जोड़ते हैं, सबसे आसान तरीका प्रोटोकॉल नाम पर माउस करने के लिए है और इसका नाम क्लिक करें आदेश। यह इसकी परिभाषा को खींच देगा। प्रोटोकॉल परिभाषाओं के साथ, आमतौर पर उनके पास तुरंत उनका पालन करने के तरीके होते हैं। यदि किसी विधि की आवश्यकता है तो यह शीर्ष पर होगा, यदि उसके सामने वैकल्पिक है, तो अनुरूप होने के लिए इसकी आवश्यकता नहीं है।

`UISearchResultsUpdating के मामले में, यह केवल एक विधि है और यह आवश्यक है। बस विधि, या एकाधिक विधियों की प्रतिलिपि बनाएँ और अपनी कक्षा में वापस जाने के लिए पीछे तीर पर क्लिक करें। विधियों को अपनी कक्षा में पेस्ट करें, और उन्हें लागू करें। यदि वे वैकल्पिक तरीके थे (इस मामले में कोई वैकल्पिक विधियां नहीं हैं), सामने से वैकल्पिक हटा दें। यही वह है जिसे मैंने परिभाषा से कॉपी किया था।

func updateSearchResultsForSearchController(searchController: UISearchController) 

फिर आप इसे करने के लिए इसे अपडेट करना चाहते हैं।

func updateSearchResultsForSearchController(searchController: UISearchController) { 
    //do whatever with searchController here. 
} 

अतिरिक्त उदाहरण के रूप में, कमांड NSFechedResultsControllerDelegate पर क्लिक करें। आप देखेंगे कि इसमें कोई आवश्यक विधियां नहीं हैं, लेकिन बहुत से वैकल्पिक हैं। यह जानकारी आम तौर पर साथ ही दस्तावेज में पाया जाता है, लेकिन मैं आदेश मिला + मैं के लिए क्या देख रहा हूँ लगता है सबसे तेज़ तरीका होने के लिए क्लिक गए हैं।

17

स्विफ्ट 3:

func updateSearchResults(for searchController: UISearchController) { 

// code here 

} 
+0

[कैसे जवाब देने के लिए] (http://stackoverflow.com/help/how-to-nswer) - कृपया यह पोस्ट करने से पहले पढ़ें। – AgataB

+0

हे @ एगाटा बी, आपका लिंक गलत यूआरएल का संदर्भ देता है - [जवाब कैसे दें] (http://stackoverflow.com/help/how-to-answer) –

+2

यह सुनिश्चित नहीं है कि समस्या कहां है - नियंत्रक को अनुरूप बनाने के लिए प्रोटोकॉल, स्विफ्ट 3 में आवश्यक विधि के लिए वाक्यविन्यास उपर्युक्त के अनुसार बदल गया है। –

5

स्विफ्ट 3,0

//Make sure to import UIKit 
import Foundation 
import UIKit 

class ViewController: UIViewController, UISearchBarDelegate { 

    var searchController = UISearchController() 

    override func viewDidLoad() { 
      //Setup search bar 
      searchController = UISearchController(searchResultsController: nil) 
      searchController.dimsBackgroundDuringPresentation = false 
      definesPresentationContext = true 
      //Set delegate 
      searchController.searchResultsUpdater = self 
      //Add to top of table view 
      tableView.tableHeaderView = searchController.searchBar 
    } 
} 
extension ViewController: UISearchResultsUpdating { 
    func updateSearchResults(for searchController: UISearchController) { 
      print(searchController.searchBar.text!) 
    } 
} 
संबंधित मुद्दे

 संबंधित मुद्दे