2017-09-23 65 views
0

这里的任何方法对我的类的代码返回的cellForRowAtIndexPath错误:不覆盖从超

import UIKit 

class VideoSearchController: UITableViewController, UISearchResultsUpdating { 

    var searchResults: NSDictionary = [:] 

    let searchController = UISearchController(searchResultsController: nil) 

    // Can't override 
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath as IndexPath) as! SearchTableCell 

     cell.videoTitle.text = "This is the title" 
     cell.viewCount.text = "1,234,567" 
     cell.channelName.text = "benlvn" 
     let url = URL(string: "https://i.redd.it/78r3ttko3nnz.jpg") 
     let data = try? Data(contentsOf: url!) //make sure your image in this url does exist, otherwise unwrap in a if let check/try-catch 
     cell.thumbnail.image = UIImage(data: data!) 

     return cell 
    } 

    // Can't override 
    override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return 1 
    } 

    // Override works 
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return searchResults.count 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

    } 

    func updateSearchResults(for searchController: UISearchController) { 
     // TODO 
    } 

    func searchBarIsEmpty() -> Bool { 
     // Returns true if the text is empty or nil 
     return searchController.searchBar.text?.isEmpty ?? true 
    } 

} 

即使VideoSearchController从继承的UITableViewController,它不会让我重写的cellForRowAtIndexPath或numberOfSectionsInTableView因为这些方法不存在于超类中。但是,它让我重写numberOfRowsInSection。

为什么会发生这种情况,我该如何解决?

+0

您试图重写旧斯威夫特2 API。 – rmaddy

回答

1

的声明是:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

而且

override func numberOfSections(in tableView: UITableView) -> Int {